Hadoop學習(一)搭建Hadoop的分布式集群
搭建Hadoop的分布式集群
Hadoop集群搭建的準備操作:
1、準備四臺服務器
四臺服務器的主機名分別是:potter2、potter3、potter4、potter5。
對以上四臺服務器需要做一下準備操作,這些準備都是為了將來搭建Hadoop集群做準備的。
(1)修改各個服務器的主機名。
第一步:先查看主機名
第二步:永久修改主機名
保存退出
(2)配置各個服務器的IP
第一步:查看服務器ip
第二步:配置ip
(3)配置各個服務器的主機映射
配置主機映射:
(4)添加potter用戶,並且添加sudoer權限
第一步:添加用戶
設置密碼:
第二步:添加sudoer權限
在root用戶下編輯 vi /etc/sudoers
在文件的如下位置,為hadoop添加一行即可
root ALL=(ALL) ALL
potter ALL=(ALL) ALL
然後,hadoop用戶和spark用戶就可以用sudo來執行系統級別的指令
[hadoop@hadoop01 ~]$ sudo
(5)關閉防火墻/關閉selinux
第一步:關閉防火墻
設置防火墻開機自啟:
查看防火墻狀態:
第二步:關閉selinux
(6)更改系統啟動級別為3
第一步:查看系統運行的級別
第二步:修改系統默認啟動級別
(7)安裝JDK
第一步:準備JDK軟件
jdk-8u73-linux-x64.tar.gz
第二步:可以通過ftp工具把軟件傳到linux服務器上面;或者按住鍵盤上面的ALT+P 直接拖動上去。
第三步:把軟件解包解壓縮出來到安裝路徑下去:
tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local/
第四步:配置環境變量
1、vi /etc/profile
2、在該文件最後加入兩行代碼:
export JAVA_HOME=/usr/local/jdk1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin
3、保存退出
4、執行 source /etc/profile
第五步:檢測 jdk 是否安裝成功,使用命令:java -version
然後進行克隆三臺機器,只需要修改IP跟主機名。
(8)四臺服務器做時間同步
第一步:使用 date 命令手動簡單同步一下
命令:date -s "2016-10-23 11:11:11"
修改時間後,需要寫入硬件 bios 才能在重啟之後依然生效
命令:hwclock -w
第二步:配置 crontab 服務,用 ntpdate 定時同步時間(推薦方式)
ntpdate 202.120.2.101
第三步:如果類似 202.120.2.101 這種網絡時間服務器無法訪問,那麽請自行搭建時間服務器
以上兩種方式不管怎麽做,都不要忘記更改時區。
(9)四臺服務器配置SSH(免密登錄)
第一種方式:手動配置(需要在.ssh文件夾中)命令:cd .ssh
第一步:在potter2中生成密鑰對:命令:ssh-keygen
第二步:將potter2自己的公鑰放置到授權列表文件authorized_keys
cat id_rsa.pub >> authorized_keys
第三步:在potter3中生成密鑰對:命令:ssh-keygen
第四步:將potter2中的authorized_keys發送給potter3對應的文件夾下
scp -r authorized_keys [email protected]:/root/.ssh/(如果配置了映射文件IP地址可以寫成potter3)
第五步:將potter3中的公鑰放置到authorized_keys
cat id_rsa.pub >> authorized_keys(這樣potter3裏面authorized_keys就有了potter2和potter3的公鑰,可以用 命令:cat authorized_key 查看)
第六步:將potter3中的authorized_keys發送給potter4對應的文件夾下
scp -r authorized_keys [email protected]:/root/.ssh/
第七步:將potter4中的公鑰放置到authorized_keys
cat id_rsa.pub >> authorized_keys
第八步:將potter4中的authorized_keys發送給potter5對應的文件夾下
scp -r authorized_keys [email protected]:/root/.ssh/
第九步:將potter5中的公鑰放置到authorized_keys
cat id_rsa.pub >> authorized_keys(這樣authorized_keys文件裏面就有了potter2、potter3、potter4、potter5的公鑰,可以用命令:cat authorized_key 查看)
第十步:將potter5中的authorized_keys發送個各個linux服務器
scp -r authorized_keys [email protected]:/root/.ssh/
scp -r authorized_keys [email protected]:/root/.ssh/
scp -r authorized_keys [email protected]:/root/.ssh/
這樣每個服務器中就都有了每一個服務器的公鑰,配置完成。
第二種方式:
用 SecureCRTPortable這個軟件將四臺服務器連接好
第一步:點擊Window選上TileVertically
會出現以下界面
第二步:點擊View,選取ChatWindow
會在下方出現一個輸入框
第三步:在空白處右鍵選擇Send Chat to All Sessions,會在空白處上方出現Send Chat to All Sessions這個字樣。這樣就可以在空白處輸入命令一起操控四臺服務器。
第三步:在空白處輸入命令:ssh-keygen,四臺服務器會一起生成密鑰對。
第四步:在空白處輸入命令:ssh-copy-id potter2,會在potter2服務器上一起生成四個公鑰。
第五步:在空白處執行三次分別是:
ssh-copy-id potter3
ssh-copy-id potter4
ssh-copy-id potter5
這樣每個服務器上的ssh就配置好了。
以上的實現可以分兩步操作,先準備好potter2,先做完1-7步之後,然後克隆出potter3、potter4、potter5。
然後再做8和9操作,這樣效率最高。
正式搭建Hadoop的分布式集群
1、獲取hadoop安裝包
第一種方式:從官網直接下載
hadoop-2.7.5-src.tar.gz 2017-12-17 04:03 45M 源碼包
hadoop-2.7.5.tar.gz 2017-12-17 04:03 207M 安裝包
第二種方式:自己編譯
編譯的目的:就是為了獲取 跟 當前安裝hadoop的操作系統匹配的本地依賴庫。
2、服務器的角色規劃(分配主從節點)
服務 主節點 從節點
HDFS NameNode DataNode
YARN ResourceManager NodeManager
服務器的數量有四臺:
服務 potter2 potter3 potter4 potter5
HDFS namenode datanode datanode datanode
YARN nodemanager nodemanager nodemanager ResourceManager
具體操作步驟:
1、準備好四臺服務器,做好規劃
服務器
規劃安裝的用戶: potter
規劃安裝目錄:/home/potter/apps
規劃數據目錄:/home/potter/data
2、獲取安裝包(最好在家目錄下)
按住鍵盤Alt+p,直接拖入。
3、解壓縮(需要解壓到apps文件夾下)
tar -zxvf hadoop-2.7.5-centos-6.7.tar.gz -C ~/apps/
4、修改配置文件(需要在hadoop目錄下操作命令:cd apps/hadoop-2.7.5/etc/hadoop/)
(1)hadoop-env.sh
(2)core-site.xml
(3)hdfs-site.xml
(4)mapred-site.xml
(5)yarn-site.xml
(6)slaves
(1)vi hadoop-env.sh
修改JAVA_HOME
把 export JAVA_HOME=${JAVA_HOME}
改成 export JAVA_HOME=/usr/local/java/jdk1.8.0_73
(2)vi core-site.xml 在<configuration> </configuration>裏面添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://potter2:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/potter/data/hadoopdata</value>
</property>
(3)vi hdfs-site.xml 在<configuration> </configuration>裏面添加
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/potter/data/hadoopdata/name</value>
<description>為了保證元數據的安全一般配置多個不同目錄</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/potter/data/hadoopdata/data</value>
<description>datanode 的數據存儲目錄</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>HDFS 的數據塊的副本存儲個數, 默認是3</description>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>potter3:50090</value>
<description>secondarynamenode 運行節點的信息,和 namenode 不同節點</description>
</property>
(4)mapred-site.xml在<configuration> </configuration>裏面添加
需要先復制mapred-site.xml
命令:cp mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)vi yarn-site.xml在<configuration> </configuration>裏面添加
<property>
<name>yarn.resourcemanager.hostname</name>
<value>potter5</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>YARN 集群為 MapReduce 程序提供的 shuffle 服務</description>
</property>
(6)vi slaves
(7)當前的hadoop安裝包是存在於hadoop02上的。 但是安裝的hadoop是一個分布式的集群。
把安裝包分別分發給其他的節點
重點強調: 每臺服務器中的hadoop安裝包的目錄必須一致, 安裝包的配置信息還必須保持一致
需要在 apps文件夾下傳到另外三臺服務器
scp -r hadoop-2.7.5/ hadoop@potter3:~/apps/
scp -r hadoop-2.7.5/ hadoop@potter4:~/apps/
scp -r hadoop-2.7.5/ hadoop@potter5:~/apps/
(8)配置環境變量 需要在家目錄下(~)
千萬註意:
1、如果你使用root用戶進行安裝。 vi /etc/profile 即可 系統變量
2、如果你使用普通用戶進行安裝。可以用ll -a進行查看.bashrc文件 vi ~/.bashrc 用戶變量
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
需要發送到另外三臺服務器:
scp -r ~/.bashrc potter3:~
scp -r ~/.bashrc potter4:~
scp -r ~/.bashrc potter5:~
(下面的操作是沒有配置環境變量,可以再需要的時候再配)
(9)初始化
需要在bin文件夾下輸入命令(已經配置環境變量的命令:)$HADOOP_HOME/bin/hadoop namenode -format
(沒有配置環境變量的命令:)[hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/bin/hadoop namenode -format
只能在HDFS的主節點進行(主節點就是potter2服務器)
查看初始化:
進入這個目錄/home/potter/data/hadoopdata/name 有一個current文件夾,進入current裏面有四個文件,說明初始化成功。
(10)啟動
可以再hadoop文件夾下查看配置的主節點是哪個服務器
命令:cat yarn-site.xml
第一步:啟動HDFS : 不管在集群中的那個節點都可以
[hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-dfs.sh
第二步:啟動YARN : 只能在主節點中進行啟動
[hadoop@hadoop02 bin]$ /home/hadoop/apps/hadoop-2.7.5/sbin/start-yarn.sh
(11)檢測 或者 驗證是否成功
第一種方式:JPS 命令 查看 對應的守護進行是否都啟動成功
第二種方式:啟動HDFS和YARN的web管理界面
HDFS : http://hadoop02:50070
YARN : http://hadoop05:8088
(12)簡單使用
HDFS :(可以新建任意一個文件進行運行)
上傳文件:~/apps/hadoop-2.7.5/bin/hadoop fs -put zookeeper.out /
下載文件:~/apps/hadoop-2.7.5/bin/hadoop fs -get /zookeeper.out
YARN :
新建一個文件: /wc/input/words.txt
hello huangbo
hello xuzheng
hello wangbaoqiang
新建一個文件夾:~/apps/hadoop-2.7.5/bin/hadoop fs -mkdir -p /wc/input
把words.txt上傳到HDFS(在家目錄下輸入命令):
命令:~/apps/hadoop-2.7.5/bin/hadoop fs -put words.txt /wc/input/
查看命令:~/apps/hadoop-2.7.5/bin/hadoop fs -ls /wc/input
進入mapreduce文件夾命令:cd apps/hadoop-2.7.5/share/hadoop/mapreduce/
需要進入到mapreduce文件夾裏面,這個文件夾在hadoop文件夾下面,
[potter@potter2 mapreduce]$
運行一個mapreduce的例子程序: wordcount
命令:
~/apps/hadoop-2.7.5/bin/hadoop jar ~/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wc/input /wc/output
查看最終結果:
~/apps/hadoop-2.7.5/bin/hadoop fs -cat /wc/output/part-r-00000
最終完成hadoop的集群搭建!!!
Hadoop學習(一)搭建Hadoop的分布式集群