【重製版】全網最詳細ubuntu虛擬機器搭建hadoop+spark+zookeeper+hbase+kafka大資料環境
全網最詳細ubuntu虛擬機器搭建hadoop+spark+zookeeper+hbase+kafka大資料環境
- 一、必要準備工作
- 二、非必要準備工作(提升效率的準備)
- 三、ubuntu虛擬機器的安裝
- 四、用命令設定網路
- 五、*整體環境配置說明*
- 六、克隆虛擬機器
- 七、安裝JDK
- 八、安裝 hadoop
- 九、安裝spark
- 十、zookeeper安裝
- 十一、hbase安裝
- 十二、kafka安裝
- 十三、補充:
- ==問題集錦:==
一、必要準備工作
- 虛擬機器軟體+啟用金鑰(筆者推薦使用VMware 15以上版本,莫名其妙的錯較少)
- ubuntu虛擬機器映象,桌面版,命令版都可(筆者使用:ubuntu-20.04.1-live-server-amd64.iso)
- JDK 8以上(筆者使用:jdk-8u141-linux-x64.tar)
- xshell --> 本機可以連線虛擬機器,可選擇其他
- hadoop --> 搭建hadoop環境
- spark --> 搭建spark環境
- zookeeper --> 搭建zookeeper環境
- hbase --> 搭建hbase環境
- kafka --> 搭建kafka環境
二、非必要準備工作(提升效率的準備)
1.notepad++ && NppFTP外掛 --> 請自行百度
2.sudo 命令免密碼
sudo vim /etc/sudoers
在檔案的 root ALL=(ALL:ALL) ALL 下面增加以下程式碼(筆者使用者名稱為:lq)
lq(你的使用者名稱) ALL=(ALL)NOPASSWD: ALL
3.將使用者設定到 root組(筆者使用者名稱為:lq)
usermod -g root lq(你的使用者名稱)
說明:若命令列或者notepad++修改檔案不被允許,請使用 sudo chmod xxx 檔名,賦予讀寫執行等許可權。
三、ubuntu虛擬機器的安裝
1.參考連結
---> https://ywnz.com/linuxaz/3696.html
---> https://www.cnblogs.com/pam-sh/p/13204321.html
四、用命令設定網路
1.使用ifconfig檢視網路的名稱
ifconfig
2.修改檔案讓網路裝置自動獲取ip (也可以手動設定靜態ip,請自行百度)
sudo vim /etc/network/interfaces
內容如下:
auto ens33
iface ens33 inet dhcp
3.然後點選虛擬機器軟體的‘編輯’–>‘虛擬網路編輯器’,點選‘更改設定’,選擇‘VMnet8’,點選‘還原預設設定’
4.安裝 ssh --> 使xshell能夠連線到虛擬機器
sudo apt install ssh
5.安裝 lrzsz --> 使xhell能夠與虛擬機器上傳/下載檔案
sudo apt install lrzsz
五、整體環境配置說明
主機名與ip對應
192.168.121.xx0 --- master
192.168.121.xx1 --- slave1
192.168.121.xx2 --- slave2
目錄說明
/usr/local/env/app --- 軟體安裝目錄
/usr/local/env/software --- 軟體壓縮安裝包
/usr/local/env/datas --- 以後可能用到的資料上傳儲存目錄
/usr/local/env/temp --- 臨時目錄,可以存放jar包,或許用不到
/usr/local/env/work --- namenode & datanode 建立時按要求建立
所有環境變數設定檔案目錄為: /etc/bash.bashrc
注:有需要的軟體會在安裝目錄下新建 logs 或 xxx-log 資料夾,對應配置檔案中的 log-dir 屬性
1.涉及操作如下
1.1新建以上相關資料夾 (一行為一條命令,筆者使用者名稱為:lq)
1. cd /usr/local
2. sudo mkdir env
3. sudo chown lq -R env/
4. cd env
5. mkdir app
6. mkdir software
7. mkdir datas
8. mkdir temp
9. mkdir work
10. ll
1.2結果
2.xshell多次使用rz命令上傳軟體安裝包到software對應目錄
1.cd /usr/local/env/software
2.rz
3.(選擇檔案)等待完成
4.rz
5.(選擇檔案)等待完成
.....
1.結果
六、克隆虛擬機器
1.完整克隆出另外兩臺從機,過程如下
克隆之後可能會出現的問題,請移步最後的問題集錦。
2.分別更改兩臺從機的hostname
sudo vim /etc/hostname
slave1內容如下
slave1
slave2內容如下
slave2
3.分別更改三臺主機的hosts(前提是三臺機器的ip已經知道,或者ifconfig檢視到,且三臺機器ip必須不同)
sudo chmod 664 /etc/hosts (預設沒有讀寫許可權,執行此行命令)
sudo vim /etc/hosts
在適當的地方新增以下內容
192.168.121.xx0 master
192.168.121.xx1 slave1
192.168.121.xx2 slave2
3.更改三臺主機的hosts(效率方法)
3.1 三臺主機分別執行以下程式碼
sudo chmod 664 /etc/hosts
3.2 用notepad++連線master主機並在 /etc/hosts 增加以下內容
192.168.121.xx0 master
192.168.121.xx1 slave1
192.168.121.xx2 slave2
3.3 用xshell連線master主機,使用以下命令
下面的命令是把master主機的 /etc/hosts 檔案複製給slave1和slave2,減少重複操作,之後教程中涉及到三臺主機都要修改某個相同檔案時,都將採取這種辦法
1. scp -rp /etc/hosts lq@slave1:/etc
2. scp -rp /etc/hosts lq@slave2:/etc
注:克隆之後用ifconfig命令檢視一下三臺機器的ip,若出現ip一樣,則移步到最後的問題集錦
4.設定主從機之間相互無密碼ssh
4.1 設定 master 無密碼自登陸
主要有三步:①生成公鑰和私鑰、②匯入公鑰到認證檔案、③更改許可權
1. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod 700 ~/.ssh
4. chmod 600 ~/.ssh/*
測試,第一次登入可能需要 yes 確認,之後就可以直接登入了:
ssh localhost
對於 slave1 、 slave2 和 slave3,進行無密碼自登陸設定,操作同上。
4.2 設定主機->從機的無密碼登入
執行如下命令(lq 為筆者的使用者名稱):
cat ~/.ssh/id_rsa.pub | ssh lq@slave1 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_rsa.pub | ssh lq@slave2 'cat - >> ~/.ssh/authorized_keys'
測試:
ssh slave1
ssh slave2
4.3 設定從機->主機的無密碼登入
分別在 slave1、slave2 上執行:
cat ~/.ssh/id_rsa.pub | ssh lq@master 'cat - >> ~/.ssh/authorized_keys'
------------ 下面進入大資料軟體安裝部分講解 ---------------
安裝軟體的總體過程介紹:
1.將軟體的壓縮包解壓到指定目錄(相當於win的安裝)
2.配置軟體到環境變數
3.軟體本身的配置
4.測試
七、安裝JDK
1.將 /usr/local/env/software 下的JDK壓縮包解壓到/usr/local/env/app (注意命令執行的路徑,只提醒一次,之後直接貼命令)
sudo tar -zxvf /usr/local/env/software/jdk-8u141-linux-x64.tar.gz -C /usr/local/env/app
2.將jdk配置到環境變數裡(a.使用notepad++ 或 b.使用vim編輯。)
sudo vim /etc/bash.bashrc
在檔案最後新增內容如下:
#java conf
export JAVA_HOME=/usr/local/env/app/jdk1.8.0_141
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
注:前幾個軟體配置環境時會用vim講解,之後的軟體配置都採用notepad++的NppFTP外掛,以提高效率。
3.測試
使用scp命令將 /etc/bash.bashrc 檔案和配置好的 jdk1.8.0_141 檔案傳遞給slave1和slave2.
java -version
八、安裝 hadoop
1.將 /usr/local/env/software 下的hadoop壓縮包解壓到/usr/local/env/app (注意命令執行的路徑,再提醒一次,之後直接貼命令)
lq@master:/usr/local/env/software$ sudo tar -axvf hadoop-2.7.7.tar.gz -C /usr/local/env/app/
2.配置環境變數
sudo vim /etc/bash.bashrc
增加內容如下:
#hadoop conf
export HADOOP_HOME=/usr/local/env/app/hadoop-2.7.7
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
注:前幾個軟體配置環境時會用vim講解,之後的軟體配置都採用notepad++的NppFTP外掛,以提高效率。
3.軟體本身的配置
3.1 修改/usr/local/env/app/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/env/app/jdk1.8.0_141
3.2 修改/usr/local/env/app/hadoop-2.7.7/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/env/app/hadoop-2.7.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
3.3 修改/usr/local/env/app/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
<descriptipn>配置 HDFS 的 http 的訪問位置</descriptipn>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<descriptipn>配置檔案塊的副本數,不能大於從機的個數</descriptipn>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/env/work/name</value>
<descriptipn>名位元組點訪問位置</descriptipn>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/env/work/data</value>
<descriptipn>資料節點訪問位置</descriptipn>
</property>
</configuration>
3.4 修改Slaves
master
slave1
slave2
3.5 修改yarn-env.sh
export JAVA_HOME=/usr/local/env/app/jdk1.8.0_141
3.6 修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
3.7 修改mapred-site.xml(複製一份模板檔案,再修改)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
3.8 測試
使用scp命令將 /etc/bash.bashrc 檔案和配置好的 hadoop-2.7.7 檔案傳遞給slave1和slave2.
對namenode節點進行格式化處理,如下命令。
cd /usr/local/env/app/hadoop-2.7.7/bin
./hdfs namenode -format
之後再執行
cd /usr/local/env/app/hadoop-2.7.7/sbin
./start-dfs.sh
在master檢視:(slave等也可檢視)
之後接著執行
./start-yarn.sh
在master檢視:(slave等也可檢視)
九、安裝spark
1. 解壓壓縮包到/usr/local/env/app
sudo tar -zxvf /usr/local/env/software/spark+(Tab匹配) -C /usr/local/env/app
2. 配置環境變數
sudo vim /etc/bash.bashrc
配置內容如下:
#spark conf
export SPARK_HOME=/usr/local/env/app/spark-2.4.5-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH
3. 軟體本身的配置
切換到spark的安裝目錄的‘conf’資料夾下,將‘spark-env.sh.template ’複製重名命‘spark-env.sh’,然後使用‘sudo vim spark-env.sh’ 進行相應配置。
cp /usr/local/env/app/spark-2.4.5-bin-hadoop2.7/conf/spark-env.sh.template /usr/local/env/app/spark-2.4.5-bin-hadoop2.7/conf/spark-env.sh
使用vim配置spark環境(效率用notepad++)
sodu vim /usr/local/spark/conf/spark-env.sh
配置內容如下:
#java conf
export JAVA_HOME=/usr/local/env/app/jdk1.8.0_141
#hadoop conf
export HADOOP_HOME=/usr/local/env/app/hadoop-2.7.7
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
#hbase conf
export HBASE_HOME=/usr/local/env/app/hbase-2.1.9
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HADOOP_HOME}/lib/native
export SPARK_DIST_CLASSPATH=$(/usr/local/env/app/hadoop-2.7.7/bin/hadoop classpath)
修改 slaves(先複製模板檔案再修改)為以下內容:
slave1
slave2
4. 測試
4.1 使用scp命令將 /etc/bash.bashrc 檔案和配置好的 spark-2.4.5-bin-hadoop2.7 檔案傳遞給slave1和slave2.
4.2 在master節點執行
cd /usr/local/env/app/spark-2.4.5-bin-hadoop2.7/sbin
./start-all.sh
4.3 檢視執行結果
在master節點上:(會有Master)
在slave節點上:(會有Worker)
十、zookeeper安裝
1. 解壓壓縮包到/usr/local/env/app
sudo tar -zxvf /usr/local/env/software/zookeeper+(Tab匹配) -C /usr/local/env/app
2. 配置環境變數
sudo vim /etc/bash.bashrc
配置內容如下:
#zookeeper conf
export ZOOKEEPER_HOME=/usr/local/env/app/zookeeper-3.5.8-bin
export PATH=${ZOOKEEPER_HOME}/bin:$PATH
3. 軟體本身的配置
cd /usr/local/env/app/zookeeper-3.5.8/conf
sudo cp zoo_sample.cfg zoo.cfg
sudo vim zoo.cfg
(叢集模式搭建)內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/env/app/zookeeper-3.5.8/zkData
dataLogDir=/usr/local/env/app/zookeeper-3.5.8/logs
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在/usr/local/env/app/zookeeper-3.5.8/zkData新建myid檔案,各個主機對應的內容是不同的,master 的內容是 1,slave1 的內容是 2,slave2 的內容是3,分別對應 server.x 中的 x
sudo vim myid
注:
tickTime:是 zookeeper 的最小時間單元的長度,它被用來設定心跳檢測和會話最小超時時間
initLimit:初始化連線時能容忍的最長 tickTime 個數
syncLimit:follower 用於同步的最長 tickTime 個數
dataDir:伺服器儲存 資料快照 的目錄
dataLogDir:伺服器儲存 事務日誌 的目錄
clientPort:用於 client 連線的 server 的埠
其中需要注意的是 dataDir 和 dataLogDir,要保證這兩個目錄已經被建立並且使用者擁有這兩個目錄的許可權。
4. 測試
使用scp命令將 /etc/bash.bashrc 檔案和配置好的 zookeeper-3.5.8 檔案傳遞給slave1和slave2.
分別在master和slave上執行以下命令:
cd /usr/local/env/app/zookeeper-3.5.8/bin
./zkServer.sh start
在master上檢視:(會有QuorumPeerMain)
在slave1上檢視:(會有QuorumPeerMain)
相關命令:
十一、hbase安裝
1. 解壓壓縮包到/usr/local/env/app
sudo tar -zxvf /usr/local/env/software/hbase+(Tab匹配) -C /usr/local/env/app
2. 配置環境變數
sudo vim /etc/bash.bashrc
配置內容如下:
#hbase conf
export HBASE_HOME=/usr/local/env/app/hbase-2.1.9
export PATH=${HBASE_HOME}/bin:$PATH
3. 軟體本身的配置
三臺機器上完全一樣,只需要配置完成一臺機器,再用scp命令複製到其餘兩臺機器上即可。檔案全在$HBASE_HOME/conf 下。
cd /usr/local/hbase-2.1.9/conf
在 ‘hbase-env.sh’中修改如下
#java conf and zk
export JAVA_HOME=/opt/jdk1.8.0_141
export HBASE_MANAGES_ZK=false #使用獨立的 Zookeeper 而不使用內建的
在 ‘hbase-site.xml’ 中修改如下
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
在 ‘regionservers’ 中修改如下(根據實際機器修改)
master
slave1
slave2
配置 backup Master,在 conf/目錄下建立 backup-masters ,新增內容為
新建檔案
sudo vim backup-masters
內容
slave1
4. 測試
使用scp命令將 /etc/bash.bashrc 檔案和配置好的 hbase-2.1.9 檔案傳遞給slave1和slave2.
在啟動 HBase 之前,必須將 Hadoop 和 Zookeeper 都啟動起來,才可以起啟動 HBase。
cd /usr/local/env/app/hbase-2.1.9/bin
./start-hbase.sh
在master節點檢視:(會有HMaster)
在slave1節點檢視:(會有HMaster 和 HRegionServer)
在slave2節點檢視:(會有HRegionServer)
還可以在hbase環境裡進行建表等測試。
hbase shell
list
create 'test','info'
list
十二、kafka安裝
1. 解壓壓縮包到/usr/local/env/app
sudo tar -zxvf /usr/local/env/software/kafka+(Tab匹配) -C /usr/local/env/app
2. 配置環境變數
sudo vim /etc/bash.bashrc
配置內容如下:
#kafka conf
export KAFKA_HOME=/usr/local/env/app/kafka_2.11-2.4.1
export PATH=${KAFKA_HOME}/bin:$PATH
3. 軟體本身的配置
4. 測試
kafka啟動之前要確保zookeeper先啟動成功。
如圖所示:(涉及的命令在後面講解)
- 三臺機器在kafka安裝目錄執行以下命令。
- 建立topics
- 選擇一臺機器作為訊息生產者(傳送者)
傳送訊息,一行表示一條訊息。(有 > 標識)
- 選擇機器作為訊息消費者(接收者)
5. 涉及的命令
//#守護程式模式 ( !*!*!==> 要在kafka的安裝目錄下執行下面的啟動命令 涉及到資料夾目錄的指定 )
bin/kafka-server-start.sh -daemon config/server.properties > logs/kafkaserver-boot.log 2>&1 &
bin/kafka-server-start.sh config/server.properties > logs/kafkaserver-boot.log 2>&1 &
//#建立 topics partitions:分割槽 replication-factor:副本,要小於叢集的機器數
bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181,slave2:2181 --topic test01 --replication-factor 2 --partitions 3
bin/kafka-topics.sh --create --zookeeper master-s:2181,slave1-s:2181,slave2-s:2181 --topic test01 --replication-factor 2 --partitions 3
//#檢視 topics
bin/kafka-topics.sh --list --zookeeper master:2181,slave1:2181,slave2:2181
bin/kafka-topics.sh --describe --zookeeper master:2181,slave1:2181,slave2:2181 --topic TestCase
//#傳送 訊息
bin/kafka-console-producer.sh --broker-list master:9092 --topic test01
bin/kafka-console-producer.sh --broker-list master:9092,slave1:9092,slave2:9092 --topic test01
bin/kafka-console-producer.sh --broker-list master-s:9092 --topic test01
This is a message
This is another message
it is successful that producer send message
//#消費 訊息
bin/kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092,slave2:9092 --topic test01 --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092,slave2:9092 --topic TestCase --from-beginning
//#delete topics (最好先檢視一下)
bin/kafka-topics.sh --delete --zookeeper master:2181,slave1:2181,slave2:2181 --topic xxx
//#結束
zkServer.sh stop
bin/kafka-server-stop.sh
十三、補充:
問題集錦:
1.克隆虛擬機器之後,三臺主機的ip地址一樣.
[ 方法一 ] 再進行【四、3】中的網路設定還原。然後分別再次啟動三臺主機。使用ifconfig命令檢視三臺主機的ip,並在 /etc/hosts 中修改對應ip。
[ 方法二 ] 在克隆出來的機器上,使用 sudo netplan apply 命令,然後關機(不是重啟),再開機,用 ifconfig 檢視三臺機器的ip,並在 /etc/hosts 中修改對應ip。
[ 方法三 ] 手動設定靜態ip,請自行百度。
相關文章
- 虛擬機器arm虛擬環境搭建虛擬機
- GitChat·大資料 | 史上最詳細的Hadoop環境搭建Git大資料Hadoop
- Ubuntu虛擬機器進入虛擬環境的流程Ubuntu虛擬機
- 虛擬機器環境搭建之vagrant虛擬機
- 虛擬機器配置和環境搭建虛擬機
- Mac版最詳細的Flutter開發環境搭建MacFlutter開發環境
- 大資料學習環境準備[1] - 建立虛擬機器大資料虛擬機
- 【RAC】使用VMware虛擬機器搭建RAC環境虛擬機
- 虛擬環境搭建
- 虛擬機器搭建測試環境解決方案虛擬機
- RHEL9.4搭建虛擬機器實驗環境虛擬機
- 史上最詳細的Hadoop環境搭建Hadoop
- 07、環境-虛擬機器網路設定虛擬機
- 虛擬機器快速搭建弱網測試環境 ATC (適合新手)虛擬機
- 一、虛擬機器環境配置虛擬機
- Ubuntu python虛擬環境UbuntuPython
- 虛擬機器硬體環境搭建問題若干(一)虛擬機
- win10如何在虛擬機器上安裝ubuntu_win10虛擬機器安裝ubuntu詳細教程Win10虛擬機Ubuntu
- [原創]測試環境搭建虛擬機器工具介紹虛擬機
- 第4篇 虛擬機器搭建gitlab環境步驟虛擬機Gitlab
- 虛擬機器基礎環境配置虛擬機
- 最詳細的JavaWeb開發基礎之java環境搭建(Mac版)JavaWebMac
- 最詳細的JavaWeb開發基礎之java環境搭建(Windows版)JavaWebWindows
- KVM虛擬化環境搭建
- CentOS 7.6虛擬環境搭建CentOS
- Python搭建虛擬環境Python
- python 虛擬環境搭建Python
- 虛擬環境搭建相關
- python虛擬環境搭建Python
- Python 虛擬環境全知道Python
- Ubuntu 18.04(虛擬機器)環境下編譯Android 原始碼Ubuntu虛擬機編譯Android原始碼
- 學習CDH叢集環境的搭建(虛擬機器可演示)虛擬機
- VMware虛擬機器搭建Linux Oracle 10g ASM環境虛擬機LinuxOracle 10gASM
- Windows逆向之配置虛擬機器環境Windows虛擬機
- TensorFlow筆記-02-Windows下搭建TensorFlow環境(win版非虛擬機器)筆記Windows虛擬機
- python virtualenv虛擬環境搭建Python
- 零報錯基於Virtualbox虛擬機器搭建Linux(Ubuntu)的Android開發環境虛擬機LinuxUbuntuAndroid開發環境
- Linux環境搭建 | 手把手教你配置Linux虛擬機器Linux虛擬機