Hadoop通常有三種運行模式,分別是:java
這裏介紹的就是如何搭建一個Hadoop徹底分佈式集羣。node
歡迎關注微信公衆號:萬貓學社,每週一分享Java技術乾貨。linux
準備了四個服務器,IP爲192.168.0.23六、192.168.0.23七、192.168.0.23八、192.168.0.239,其中192.168.0.236做爲主節點,其餘3個做爲從節點。具體版本信息以下:apache
歡迎關注微信公衆號:萬貓學社,每週一分享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技術乾貨。ssh
編輯/etc/selinux/config文件:分佈式
vi /etc/selinux/config
把oop
SELINUX=enforcing
修改成:學習
SELINUX=disabled
重啓服務器
reboot
歡迎關注微信公衆號:萬貓學社,每週一分享Java技術乾貨。
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技術乾貨。
分佈式集羣搭建須要主節點可以免密登陸至各個從節點上。所以,須要在主節點上生成公鑰,把將主節點的公鑰在從節點中加入受權。
ssh-keygen -t rsa
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技術乾貨。
參見以前的《詳解在Linux系統中安裝JDK》,這裏就再也不贅述了。
從北京理工大學的鏡像上下載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(若是下載速度慢,能夠在主節點上發送到從節點):
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 -format
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh
訪問http://onemore-hadoop-master:50070/,就能夠查看Hadoop集羣的相關信息了,如圖:
歡迎關注微信公衆號:萬貓學社,每週一分享Java技術乾貨。
hadoop dfsadmin -report
/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh /usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh
/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技術乾貨。