1. 程式人生 > >docker中搭建Hadoop叢集

docker中搭建Hadoop叢集

前提:jdk和ssh服務都已經安裝完成,如未完成,請參考博主所寫部落格
1、建立映象容器 -P將容器的所有埠對映到主機埠
docker run -itd -v /c/Users:/root/build -P -h master --name master --net mynetwork --ip 172.18.0.2 hadoop:master /bin/bash
docker run -itd -v /c/Users:/root/build -P -h slave1 --name slave1 --net mynetwork --ip 172.18.0.3 hadoop:slave1 /bin/bash
docker run -itd -v /c/Users:/root/build -P -h slave2 --name slave2 --net mynetwork --ip 172.18.0.4 hadoop:slave2 /bin/bash
2、執行容器
docker attach master
docker attach slave1
docker attach slave2
3、安裝到/usr/local/目錄下
cp jdk-8u181-linux-x64.tar.gz /usr/local/
4、解壓
tar -zxvf jdk-8u181-linux-x64.tar.gz
5、重新命名
mv hadoop-2.7.6 hadoop276
6、刪除安裝包
rm -rf hadoop-2.7.6.tar.gz
7、修改/etc/hosts檔案
172.18.0.2 master
172.18.0.3 slave1
172.18.0.4 slave2
8、修改配置檔案(配置時註釋部分一定要刪除)
配置vim

hadoop-env.sh
export JAVA_HOME=/usr/java/jdk8/
配置vim yarn-env.sh
export JAVA_HOME=/usr/java/jdk8/
配置vim core-site.xml

修改配置檔案
配置vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk8/
配置vim yarn-env.sh
export JAVA_HOME=/usr/java/jdk8/
配置vim core-site.xml
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000/</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoopdata</value>
        </property>
配置vim hdfs-site.xml
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>		
配置vim yarn-site.xml		
        <!--nomenodeManager獲取資料的方式是shuffle-->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <!--ResourceManager 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程式,殺死應用程式等-->
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>master:18040</value>
        </property>
        <!--ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。-->
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>master:18030</value>
        </property>
        <!--ResourceManager 對NodeManager暴露的地址.。NodeManager通過該地址向RM彙報心跳,領取任務等。-->
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>master:18025</value>
        </property>
        <!--ResourceManager 對管理員暴露的訪問地址。管理員通過該地址向RM傳送管理命令等。-->
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>master:18141</value>
        </property>
        <!--ResourceManager對外web ui地址。使用者可通過該地址在瀏覽器中檢視叢集各類資訊。-->
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>master:18088</value>				
配置mapred-site.xml
複製etc/hadoop/mapred-site.xml.template, 另存為 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
修改配置slave檔案
slave1
slave2

9、建立目錄存放資料檔案
cd /home/
mkdir /home/hadoopdata
10、配置hadoop環境變數
vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop276
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
11、載入變數
source ~/.bashrc
啟動hadoop叢集進行測試
12、啟動hadoop叢集進行測試
首先測試試試服務是否開啟,可通過/usr/sbin/sshd -D &命令開啟
a、格式化檔案系統: 在master 節點執行
hdfs namenode –format
b、啟動hadoop(停止:sbin/stop-all.sh)
cd /usr/local/hadoop276
sbin/start-all.sh
c、驗證:
在三個節點中輸入 jps
d、儲存為映象
docker commit -a “axh” -m “centos7 with jdk ssh hadoop installed” master hadoop:master
docker commit -a “axh” -m “centos7 with jdk ssh hadoop installed” slave1 hadoop:slave1
docker commit -a “axh” -m “centos7 with jdk ssh hadoop installed” slave2 hadoop:slave2