1)安裝虛擬機VirtualBox
先卸載,再安裝,
學會基本操作, 啓動虛擬機, 新建虛擬機, 主機網絡管理器查看虛擬網卡,
2)安裝CentOS
安裝1臺乾淨的CentOS作爲搭建hadoop集羣的基礎環境
純命令行界面安裝成功登陸, 忘記root密碼會修改,
虛擬網卡配置, win7和CenOS構成的網絡拓撲,ifconfig查看IP地址, ping命令測試,XSHELL遠程連接,
修改配置文件配置IP地址, 配置文件的位置/etc/sysconfig/network-scripts
配置YUM源, 連接阿里源,自動安裝軟件 yum list 和 yum install
學會虛擬機的複製,複製後應該修改IP,避免IP地址衝突, 複製的新虛擬機的MAC地址是自動分配的不會衝突
可參考系列博文Hadoop手把手逐級搭建,從單機僞分佈到高可用+聯邦
https://yq.aliyun.com/users/r3cgwpwhr7cie?spm=a2c4e.11153940.0.0.cea964409exlsb
1)複製一臺新的CentOS虛擬機
必須關機後才能複製
2)XSHELL遠程登錄
注意VirtualBox主機網絡管理器的虛擬網卡IP地址必須和CentOS一個網段
3)通過配置文件修改IP地址
配置文件位置/etc/sysconfig/network-scripts/ifcfg-enp0s8,文件名和網絡名稱對應
修改後執行service network restart重啓網絡接口,XSHELL用新的IP地址重新連接
4)拷貝Hadoop安裝包和JAVA JDK安裝包到Linux
拷貝到/home目錄
5)解兩個壓縮安裝包到指定目錄
cd /home
tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local/
tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
6)修改hostname主機名
vi /etc/hostname 主機名修改爲hadoop
7)修改hosts文件
vi /etc/hosts
前兩行保留,刪除掉多餘的行,只增加一行
192.168.56.10 hadoop
注意:IP地址設置爲虛擬機Linux的IP地址,按實際地址設置
8)設置環境變量並使之生效
vi /etc/profile
增加以下內容:
#jdk
export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile 讓環境變量生效
echo $JAVA_HOME
echo $HADOOP_HOME 測試環境變量是否生效
9)設置本機的SSH免密登錄
執行 ssh hadoop 或 ssh 192.168.56.20(當前Linux的IP地址),測試能否免密登錄本機Linux,如果必須輸入才能登錄,就必須進行SSH免密登錄設置
執行ssh-keygen命令,遇到提示直接回車,生成一個密鑰對,使用RSA加密算法,生成一個公鑰和一個私鑰
執行ssh-copy-id hadoop 或 ssh 192.168.56.20命令 , 把公鑰發送到目標機
再次執行 ssh hadoop 或 ssh 192.168.56.20,測試能否免密登錄本機Linux,如果能不輸入密碼自動登錄成功,說明SSH免密登錄設置成功
10)關閉防火牆firewall和SeLinux
關閉防火牆命令 systemctl disable firewalld 關閉後執行systemctl status firewalld查看防火牆狀態爲inactive,關閉成功
關閉SeLinux命令 setenforce 0 關閉後執行getenforce查看SeLinux的狀態爲Permissive,關閉成功
11)修改hadoop-env.sh文件
文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
vi hadoop-env.sh
a)修改JAVA_HOME環境變量的值爲java jdk的存放路徑
# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/java/jdk1.8
b)還要修改HADOOP_CONF_DIR變量的值,HADOOP_CONF_DIR表示hadoop配置文件的存放路徑,否則執行start-dfs.sh啓動hdfs時會報錯
#export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}
export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
執行source hadoop-env.sh讓設置生效
12)配置core-site.xml文件
文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
vi core-site.xml
在<configuration> </configuration>之間增加藍色字體配置參數
<configuration> <property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hdfs/tmp</value>
</property></configuration>
13)修改hdfs-site.xml 配置文件
文件路徑是/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
vi hdfs-site.xml
在<configuration> </configuration>之間增加藍色字體配置參數
<configuration> <property>
<name>dfs.replication</name>
<value>1</value>
</property></configuration>
14)修改slaves文件
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/ 切換到slaves文件所在目錄
vi slaves
刪除localhost,添加本機名hadoop
15)創建HDFS存放數據的目錄
cd /root 切換到root目錄
執行命令mkdir -p hdfs/tmp 在root目錄下創建兩級子目錄/root/hdfs/tmp,
路徑/root/hdfs/tmp和core-site.xml文件中的hadoop.tmp.dir參數值相同
16)格式化HDFS文件系統
首次啓動Hadoop集羣之前,必須先格式化HDFS文件系統
cd $HADOOP_HOME 切換到hadoop安裝目錄
cd bin 切換到bin目錄
ls 查看 有一個SHELL腳本文件hdfs
執行 hdfs namenode -format 格式化命令
出現Storage directory /root/hdfs/tmp/dfs/name has been successfully formatted.
17)啓動HDFS集羣
執行腳本start-dfs.sh啓動hdfs
18)執行java進程查看命令jps,除了Jps外,出現以下三個進程,說明HDFS啓動成功:
3041 NameNode
3315 SecondaryNameNode
3128 DataNode3500 Jps
進程啓動問題的解決:
如果發現NameNode進程沒有啓動,
可先嚐試執行hadoop-daemon.sh start namenode命令來啓動namenode,
再輸入jps命令查看NameNode進程是否啓動,
如果NameNode還沒有啓動, 再執行stop-dfs.sh停止hdfs所有進程,
再執行hdfs namenode -format命令,重新執行一次格式化,
然後再次執行start-dfs.sh啓動hdfs的所有進程,
最後,執行jps命令,查看NameNode,DataNode,SecondaryNameNode三個進程,是否全部啓動成功
19)執行hadoop fs -ls / 查看hdfs文件系統目錄
此時hdfs文件系統根目錄下還沒有任何目錄,
可以執行hadoop fs -mkdir /input命令,在hdfs文件系統的根目錄下創建一個input子目錄,
然後再執行hadoop fs -ls / 查看目錄命令, 會發現出現了一個子目錄:Found 1 items
drwxr-xr-x - root supergroup 0 2019-09-12 09:50 /input
還可以執行hadoop fs -put /usr/local/hadoop-2.6.0-cdh5.7.0/README.txt /input 命令, 把Linux本地文件系統上的一個文件上傳到HDFS文件系統的/input目錄中
20)在win7下,用chrome瀏覽器訪問HDFS自帶的web配置網站 http://192.168.56.20:50070 ,能出現如下頁面說明訪問成功:
================================================================================
從第21步開始,執行配置並啓動資源協調器yarn
21)修改mapred.xml配置文件
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到mapred.xml配置文件所在目錄
cp mapred-site.xml.template mapred-site.xml 複製mapred-site.xml.template模板文件爲一個新配置文件mapred-site.xml
vi mapred-site.xml
在<configuration> </configuration>之間增加藍色字體配置參數,複製粘貼時小心亂碼
<configuration><property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property></configuration>
22)修改yarn-site.xml配置文件
cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到yarn-site.xml配置文件所在目錄
vi yarn-site.xml
在<configuration> </configuration>之間增加藍色字體配置參數,複製粘貼時小心亂碼
<configuration><property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property></configuration>
23)啓動資源協調器yarn
執行腳本start-yarn.sh啓動yarn
24)執行java進程查看命令jps,除了Jps外,多出現兩個進程ResourceManager和NodeManager,說明yarn啓動成功:
2688 DataNode
2833 Jps2546 NameNode2116 ResourceManager
2196 NodeManager2794 SecondaryNameNode
25)在win7下,用chrome瀏覽器訪問yarn自帶的web配置網站 http://192.168.56.20:8088,能出現如下頁面說明訪問成功:
從第26步開始,運行一個hadoop自帶的mapreduce示例程序:wordcount詞頻統計
本次練習使用官方案例程序
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
26)首先確認第25步已經成功啓動資源協調器yarn,如果沒有啓動就執行start-yarn.sh啓動yarn
再執行文件上傳命令,上傳本地Linux文件系統的一個文件文件README.txt 到hdfs文件系統的/inpu目錄
hadoop fs -put /usr/local/hadoop-2.6.0-cdh5.7.0/README.txt /input
27)執行詞頻統計程序wordcount
切換到目錄 cd /usr/local/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce
執行命令hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/README.txt /output
請注意/output不能提前存在,執行命令後會自動創建該目錄
28)查看詞頻統計程序wordcount的執行結果
先執行命令 hadoop fs -ls /output 查看hdfs的/output目錄的內容,應該出現:
Found 2 items
-rw-r--r-- 1 root supergroup 0 2019-09-16 09:50 /output/_SUCCESS
-rw-r--r-- 1 root supergroup 1306 2019-09-16 09:50 /output/part-r-00000
wordcount運行結果會輸出到文件output/part-r-00000中,執行命令:
hadoop fs -cat /output/part-r-00000 查看詞頻統計程序wordcount的執行結果,類似:
details 1
distribution 2
eligible 1
encryption 3
exception 1
說明詞頻統計程序運行正確