Hadoop的運行模式
Hadoop一般有三種運行模式,分別是:
- 單機模式(Standalone Mode),默認情況下,Hadoop即處于該模式,使用本地檔案系統,而不是分布式檔案系統,,用于開發和除錯,
- 偽分布式模式(Pseudo Distrubuted Mode),使用的是分布式檔案系統,守護行程運行在本機機器,模擬一個小規模的集群,在一臺主機模擬多主機,適合模擬集群學習,
- 完全分布式集群模式(Full Distributed Mode),Hadoop的守護行程運行在由多臺主機搭建的集群上,是真正的生產環境,
這里介紹的就是如何搭建一個Hadoop完全分布式集群,
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
安裝環境介紹
準備了四個服務器,IP為192.168.0.236、192.168.0.237、192.168.0.238、192.168.0.239,其中192.168.0.236作為主節點,其他3個作為從節點,具體版本資訊如下:
- CentOS 7.4
- JDK 8
- Hadoop 2.10.0
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
準備安裝環境
設定主機名
在各個服務器上修改對應的主機名:
#在192.168.0.236上執行:
hostnamectl set-hostname onemore-hadoop-master
#在192.168.0.237上執行:
hostnamectl set-hostname onemore-hadoop-slave1
#在192.168.0.238上執行:
hostnamectl set-hostname onemore-hadoop-slave2
#在192.168.0.239上執行:
hostnamectl set-hostname onemore-hadoop-slave3
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
關閉SELINUX
編輯/etc/selinux/config檔案:
vi /etc/selinux/config
把
SELINUX=enforcing
修改為:
SELINUX=disabled
重啟服務器
reboot
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
設定hosts
cat >> /etc/hosts <<EOF
192.168.0.236 onemore-hadoop-master
192.168.0.237 onemore-hadoop-slave1
192.168.0.238 onemore-hadoop-slave2
192.168.0.239 onemore-hadoop-slave3
EOF
關閉防火墻
停止防火墻
systemctl stop firewalld.service
禁止防火墻開機啟動
systemctl disable firewalld.service
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
設定免密登錄
分布式集群搭建需要主節點能夠免密登錄至各個從節點上,因此,需要在主節點上生成公鑰,把將主節點的公鑰在從節點中加入授權,
- 在192.168.0.236上生成公鑰,
ssh-keygen -t rsa
- 在192.168.0.236上,把公鑰發送到各個從節點
scp ~/.ssh/id_rsa.pub 192.168.0.237:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.238:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.239:~/.ssh
這時還不是免密登錄登錄的,需要輸入用戶名和密碼,
- 將公鑰追加到各個從節點的授權里,
在每個從節點執行一下命令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
安裝JDK
參見之前的《詳解在Linux系統中安裝JDK》,這里就不再贅述了,
Hadoop環境配置
主節點配置
下載Hadoop
從北京理工大學的鏡像上下載Hadoop:
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
創建檔案夾
mkdir /usr/local/hadoop
解壓
tar -xzvf hadoop-2.10.0.tar.gz -C /usr/local/hadoop
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
配置環境變數
追加Hadoop的環境變數到/etc/profile檔案中
cat >> /etc/profile <<EOF
#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin
EOF
使環境變數生效
source /etc/profile
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
修改組態檔
修改core-site.xml組態檔
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml
修改其內容為:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://onemore-hadoop-master:9000</value>
</property>
</configuration>
修改hdfs-site.xml組態檔
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml
修改其內容為:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
復制mapred-site.xml.template為mapred-site.xml
cp /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml
再修改mapred-site.xml組態檔
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml
修改其內容為:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://onemore-hadoop-master:9001</value>
</property>
</configuration>
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
修改yarn-site.xml組態檔
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml
修改其內容為:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>onemore-hadoop-master</value>
</property>
</configuration>
新建masters組態檔
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters
新增內容為:
onemore-hadoop-master
配置slaves檔案
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves
修改其內容為:
onemore-hadoop-slave1
onemore-hadoop-slave2
onemore-hadoop-slave3
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
從節點配置
下面以onemore-hadoop-slave1從節點為例進行敘述,您需參照以下步驟完成onemore-hadoop-slave2和onemore-hadoop-slave3從節點的配置,
下載Hadoop
還是從北京理工大學的鏡像上下載Hadoop(如果下載速度慢,可以在主節點上發送到從節點):
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
創建檔案夾
mkdir /usr/local/hadoop
解壓
tar -xzvf hadoop-2.10.0.tar.gz -C /usr/local/hadoop
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
配置環境變數
追加Hadoop的環境變數到/etc/profile檔案中
cat >> /etc/profile <<EOF
#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin
EOF
使環境變數生效
source /etc/profile
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
修改組態檔
洗掉slaves檔案
rm -rfv /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves
在主節點上把5個組態檔發送到從節點上
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
啟動Hadoop集群
格式化namenode
第一次啟動服務前需要執行詞操作,以后就不需要執行了,
hadoop namenode -format
啟動hadoop
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh
訪問http://onemore-hadoop-master:50070/,就可以查看Hadoop集群的相關資訊了,如圖:
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
常用命令
查看Hadoop集群的狀態
hadoop dfsadmin -report
重啟Hadoop
/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh
啟動dfs服務
/usr/local/hadoop/hadoop-2.10.0/sbin/start-dfs.sh
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
常見錯誤
Error: JAVA_HOME is not set and could not be found.
這個錯誤大概意思是沒有找到JDK的環境變數,可以修改hadoop-env.sh,
vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh
增加JDK的環境變數,比如:
export JAVA_HOME=/usr/local/java/jdk1.8.0_231
因為是在主節點上修改的,還需要發送到各個從節點:
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave2:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave3:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
歡迎關注微信公眾號:萬貓學社,每周一分享Java技術干貨,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/37813.html
標籤:大數據
上一篇:【30秒】去除360瀏覽器“網頁走丟了/網頁無法訪問“頁面的垃圾廣告!
下一篇:記一次Elasticsearch OOM(記憶體溢位)的優化程序—基于segments force merge 和 store type 轉為 hybridfs
