一、虛擬機安裝與配置
注意,本文不適合小白操作,查看至少需要一點兒linux操作基礎,因爲其中有很多命令並沒有寫出來。比如使用vi修改文件後,需要使用:wq來保存並退出。
安裝Hadoop集羣時需要多個服務器,所以需要安裝多個虛擬機,請自行安裝。
配置服務器的hosts文件,就是將多個服務器之間建立域名配置(這樣就可以使用域名來代替ip使用)。
vi /etc/hosts
最後添加如下內容(左邊爲每個服務器的ip,右邊爲主機名)
192.168.83.3 hadoop01
192.168.83.4 hadoop02
192.168.83.5 hadoop03
服務器ssh免密登錄功能配置
服務器要開啓ssh服務,一般的虛擬機都會自帶的,如果沒有,請自行安裝
ssh-keygen -t rsa
輸入上述命令後,不用輸入任何東西,邊按4次Enter鍵確認,會在root目錄下生成一個包含有密鑰文件的.ssh隱藏文件夾,進入目錄可以看到有兩個文件id_rsa.pub(公鑰)和id_rsa。
cd /root/.ssh
ll -a
使用命令直接複製到其他服務器上
ssh-copy-id hadoop02
ssh-copy-id hadoop03
此時,在hadoop01機器上,輸入ssh hadoop02或者ssh hadoop03時就可以免密登錄服務器了
上述步驟需要重複,直到3個服務器之前都實現免密登錄
二、Hadoop集羣搭建
2.1 安裝JDK,建議使用jdk1.8及以上(自行解決)
2.2 Hadoop安裝
以2.10.1爲例,進行安裝
- 下載
- 可以到網頁上下載 https://archive.apache.org/dist/hadoop/common
- 也可以直接使用wget命令下載
wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
- 解壓,我是直接解壓到home裏的
tar -zxvf hadoop-2.10.1.tar.gz /home
- 配置hadoop環境變量
vi /etc/profile
寫入以下內容
# 配置Hadoop系統環境變量
export HADOOP_HOME=/home/hadoop-2.10.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然後執行以下命令使環境變量生效(centos下修改環境變量就是這3步,記住就好了)
source /etc/profile
- 使用如下命令可以查看是否hadoop安裝成功
hadoop version
三、Hadoop集羣配置
3.1 配置Hadoop集羣主節點
在hadoop安裝目錄下的etc/hadoop目錄下
- 修改hadoop-env.sh文件(如果配置了JAVA_HOME環境變量,這步可跳過)
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_341
-
修改core-site.xml文件
主要設置主進程NameNode運行主機和Hadoop運行時生成的臨時目錄
<configuration>
<!--用於設置Hadoop的文件系統,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用於指定namenode地址,在hadoop01機器上,是可以使用80端口的-->
<value>hdfs://hadoop01:9000</value>
</property>
<!--用於設置Hadoop臨時目錄,可以不設置,默認在/tmp/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<!--用於指定namenode地址,在hadoop01機器上-->
<value>/home/hadoop-2.10.1/tmp-${user.name}</value>
</property>
</configuration>
-
修改hdfs-site.xml文件
用來設置NameNode和DateNode兩大進程,主要設置了Secondary NameNode 所在的服務的HTTP協議地址
<configuration>
<!--用於設置HDFS副本的數量,默認爲3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode所在主機的ip和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
</configuration>
-
修改mapred-site.xml文件
這個文件不是直接存在的需要從mapred-site.xml (1).template重命名過來。
cp mapred-site.xml .template mapred-site.xml
<configuration>
<!--指定MapReduce運行時的框架,這裏指定在YARN上,默認是local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
-
修改yarn.site.xml
配置讓YARN用來做資源管理框架
<configuration>
<!--指定YARN集羣管理者(ResourceManager,RM)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
修改slaves文件
用來配置hadoop中的集羣,刪除其中的localhost
hadoop01
hadoop02
hadoop03
3.2 將集羣主節點的配置方伯分發到其他子節點
3.1中完成的Hadoop集羣主節點hadoop01的配置,還壓根把系統配置文件、JDK安裝目錄和Hadoop安裝目錄分發到其他子節點hadoop02和hadoop03上,使用的scp命名,具體使用方法,可以自己瞭解下,不要直接複製下邊的指令哈(如果不會用scp,自己手動把上邊的步驟在每個服務器上做一遍)。
scp /etc/profile hadoop02:/etc/profile
scp /etc/profile hadoop03:/etc/profile
scp -r /usr/local/jdk/jdk1.8.0_341/ hadoop02:/usr/local/jdk/
scp -r /usr/local/jdk/jdk1.8.0_341/ hadoop03:/usr/local/jdk/
scp -r /home/hadoop-2.10.1 hadoop02:/home
scp -r /home/hadoop-2.10.1 hadoop03:/home
四、Hadoop集羣測試
4.1 格式化文件系統
hdfs namenode -format
或者
hadoop namenode -format
4.2 啓動或者關閉Hadoop集羣
可以單節點逐個啓動和關閉,也可以用腳本一鍵啓動或關閉
-
單節點逐個啓動
- 在主節點上啓動HDFS NameNode
hadoop-daemon.sh start namenode
- 在每個節點上使用以下指定啓動HDFS DataNode 進程
hadoop-daemon.sh start datanode
- 在主節點上使用以下指令啓動YARN ResourceManager進程:
yarn-daemon.sh start nodemanager
- 在每個從節點上使用以下指令啓動YARN nodemanger進程:
yarn-daemon.sh start nodemanager
- 在hadoop02上使用以下指令啓動SecondaryNameNode進程:
hadoop-daemon.sh start secondarynamenode
-
腳本一鍵啓動
要求每個節點之前開啓ssh免密登錄,上文中有寫
- 在主節點上使用以下命令啓動HDFS進程
start-dfs.sh
- 在主節點上啓動所有的YARN進程
start-yarn.sh
4.3 關閉Hadoop集羣
不論是單個節點啓動還是一鍵啓動,只需要把上邊的start換成stop就可以停止了
4.4 通過UI 查看Hadoop運行狀態
注意在windows中的hosts中配置域名映射(內容和上邊在虛擬機中配置的一樣)。還有虛擬機上記得關閉防火牆放行50070和8088端口
然後在瀏覽器輸入hadoop01:50070 和hadoop01:8088
更多學習內容請關注我的博客 jhacker.cn