自己使用的鏡像:harisekhon/hadoop:2.8
其中有些命令不一樣:
比如ssh可以直接使用,需要查找下jdk安裝路徑。然後改變jdk安裝路徑
前面使用了docker自帶的鏡像安裝,那麼這篇使用阿里鏡像搭建hadoop集羣,也參考了網上部分播客,但是多多少少有問題,我這篇播客是全部經過實踐測試成功跑起來的。
1、安裝hadoop鏡像
1)拉取鏡像
拉取阿里的hadoop鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
查看鏡像
docker images
3)創建hadoop容器
(1)創建master節點
docker run --name master -d -h master registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
參數說明:
-h 爲容器設置主機名
–name 設置容器的名稱
-d 在後臺運行
(2)以此方法創建slave1和slave2節點
docker run --name slave1 -d -h slave1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
docker run --name slave2 -d -h slave2 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
(3)查看容器
docker ps -s
(4)進入容器查看jdk
docker exec -it master bash
jdk都已經自帶了
(5)配置ssh生成祕鑰,所有的節點都要配置
進入容器後
啓動ssh
/etc/init.d/ssh start
生成祕鑰
·ssh-keygen -t rsa
(5)分別進入每個節點,將其他節點的公鑰也都複製到authorized_keys,也就是說每個>authorized_keys 文件中存儲的公鑰都是3個而且是一樣的
將容器中的文件複製到centos本地
·docker cp 容器id/容器名稱:/root/.ssh/authorized_keys /home/hadoop/authorized_keys_master
將這三個文件複製到一個文件中
cd /home/hadoop/
cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
cat authorized_keys
將centos本地的文件複製到容器
docker cp /home/hadoop/authorized_keys 容器id/容器名稱:/root/.ssh/authorized_keys
(6)分別爲每個節點配置ip地址
進入容器,在此容器中可以直接使用ip addr命令查看ip地址
爲每個容器設置地址,vi /etc/hosts
配置
ssh master 測試一下,測試成功
2、配置hadoop(配置文件的目錄一般都在/opt/tools/hadoop-2.7.2/etc/hadoop/下面)
1)配置hadoop-env.sh,配置jdk
(1)進入容器查找 hadoop-env.sh存放位置
find / -name hadoop-env.sh
(2)查看 hadoop-env.sh文件
export JAVA_HOME=/opt/tools/jdk1.8.0_77
- 1
2)配置core-site.xml,配置hdfs的地址和端口號
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3)配置hdfs-site.xml ,配置hdfs備份數量,配置namenode和datanode的數據路徑
/hadoop/data 和 /hadoop/name要提前建立此文件夾
mkdirp -p /hadoop/data
mkdirp -p /hadoop/name
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/data</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/name</value>
</property>
</configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
slave數量要大於等於備份的數量,否者會報錯
4)配置 mapred-site.xml,指定MapReduce運行在yarn上,配置JobTracker的地址和端口。
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
5)配置yarn-site.xml,配置hdfs備份數量
配置參數
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value> </property> <property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8089</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
6)將這些參數發送到其它節點
scp /opt/tools/hadoop-2.7.2/etc/hadoop/yarn-site.xml slave1:/opt/tools/hadoop-2.7.2/etc/hadoop/
將core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml 發送到slave1 和slave2節點
3、運行hadoop
1)配置slaves
2)在master上格式化namenode
hadoop namenode -format
3)在master上啓動集羣
cd /opt/tools/hadoop/sbin/
./start-all.sh
3)jps 查看進程,查看到說明已啓動
4)進入slave1查看進程
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
<div class="more-toolbox">
<div class="left-toolbox">
<ul class="toolbox-list">
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">點贊</span>
<span class="count"></span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{"mod":"1582594662_002"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打賞開始-->
<!--打賞結束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
</a>
<ul class="more-box">
<li class="item"><a class="article-report">文章舉報</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/k393393">
<img src="https://profile.csdnimg.cn/D/0/5/3_k393393" class="avatar_pic" username="k393393">
<img src="https://g.csdnimg.cn/static/user-reg-year/2x/9.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="https://blog.csdn.net/k393393" data-report-click="{"mod":"popu_379"}" target="_blank">k55</a></span>
</div>
<div class="text"><span>發佈了85 篇原創文章</span> · <span>獲贊 14</span> · <span>訪問量 6萬+</span></div>
</div>
<div class="right-message">
<a href="https://im.csdn.net/im/main.html?userName=k393393" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
</a>
<a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379"}">關注</a>
</div>
</div>
</div>