文章目錄
- 版本
- 安裝docker
- 創建鏡像
- centos鏡像
- hadoop和jdk鏡像
- 配置網路
- 配置ssh免密登錄
- 配置集群
- 配置環境變數
- 啟動測驗

版本
CentOs7
docker20
jdk1.8
hadoop3.2
手把手復現,有手就行,
可以使用虛擬機或服務器,白嫖服務器可參考:
學生黨白嫖服務器-不會吧不會吧,你還在買學生機嗎?
還可關注左側公眾號領取👈
安裝docker
yum update #更新(詢問輸入y)
yum install -y yum-utils device-mapper-persistent-data lvm2 #安裝依賴
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce #安裝docker
systemctl start docker #啟動docker
docker -v #查看docker版本


創建鏡像
centos鏡像
- 拉取centos鏡像
docker pull centos

- 配置Dockerfile(ssh服務)
vim Dockerfile
#復制以下內容
FROM centos
MAINTAINER mwf
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients
RUN echo "root:123456" | chpasswd #ssh密碼可自定義,這里就寫123456了
RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
#然后按Esc :wq保存退出
- 生成鏡像
docker build -t="centos7-ssh" . #鏡像名可自定義
docker images #查看鏡像

至此一個帶ssh服務的centos鏡像就安好了,
hadoop和jdk鏡像
- 下載并上傳安裝包
JDK
百度網盤:https://pan.baidu.com/s/1_evTH6WlmXTnpSSAsstV9Q提取碼eyu3

hadoop
百度網盤:https://pan.baidu.com/s/1S9Sqwl3UN9cq2-dSdBGKRQ 提取碼ca8s


- 配置Dockerfile(jdk+hadoop)
可以把之前的改名,或直接覆寫,注意版本號和你下載的對應,
mv Dockerfile Dockerfile.centos_ssh
vim Dockerfile
#復制以下內容
FROM centos7-ssh
ADD jdk-8u281-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_281 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
ADD hadoop-3.2.2.tar.gz /usr/local
RUN mv /usr/local/hadoop-3.2.2 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
RUN yum install -y which sudo
#然后按Esc :wq保存退出
- 生成鏡像
docker build -t="hadoop" .

配置網路
設定集群間的網路,
- 創建網橋
docker network create --driver bridge hadoop-br

- 啟動三臺(一主二從)并指定網路
docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop-br --name hadoop2 hadoop
docker run -itd --network hadoop-br --name hadoop3 hadoop

3. 檢查網路情況
docker network inspect hadoop-br

配置ssh免密登錄
- 開三個視窗分別啟動三個hadoop并配置host
docker exec -it hadoop1 bash #hadoop2、hadoop3
vi /etc/hosts
# 加入以下id和hostname,就是上一個圖圈起來的
172.18.0.2 hadoop1
172.18.0.3 hadoop2
172.18.0.4 hadoop3



- 設定免密
三臺機器都分別執行以下命令:
ssh-keygen
#一路回車
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1
#輸入密碼就是前面的123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2
#輸入密碼就是前面的123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3
#輸入密碼就是前面的123456

(
插播反爬資訊)博主CSDN地址:https://wzlodq.blog.csdn.net/
- 測驗
ping hadoop1
ping hadoop2
ping hadoop3
ssh hadoop1
ssh hadoop2
ssh hadoop3
#記得exit

配置集群
以下操作在主節點hadoop1上執行即可:
docker exec -it hadoop1 bash#進入hadoop1
mkdir /home/hadoop #創建目錄
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data
cd /usr/local/hadoop/etc/hadoop/
- core-site.xml
#vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>

2. hdfs-site.xml
#vi hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs_name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs_data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

3. mapred-site.xml
#vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>

4. yarn-site.xml
# vi yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
- workers
#vi workers
hadoop2
hadoop3

6. 拷貝
scp -r /usr/local/hadoop/ hadoop2:/usr/local/
scp -r /usr/local/hadoop/ hadoop3:/usr/local/
scp -r /usr/local/hadoop hadoop2:/
scp -r /usr/local/hadoop hadoop3:/
配置環境變數
三個都執行
- 三個視窗分別啟動docker
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash
- dfs.sh
cd /usr/local/hadoop/sbin
vi start-dfs.sh#第二行添加如下4句
vi stop-dfs.sh#第二行添加如下4句
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

- yarn.sh
cd /usr/local/hadoop/sbin
vi start-yarn.sh#第二行添加如下3句
vi stop-yarn.sh#第二行添加如下3句
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

4. env.sh
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh#加入下面這句話
export JAVA_HOME=/usr/local/jdk1.8

- 添加變數
export JAVA_HOME=/usr/local/jdk1.8
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/bin:/usr/bin:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$PATH:$HADOOP_HOME/sbin
source ~/.bashrc #執行

啟動測驗
在hadoop1下執行
- 格式化hdfs
hdfs namenode -format
- 啟動
start-all.sh
- 測驗
jps

若需要可開啟歷史服務
mr-jobhistory-daemon.sh start historyserver




原創不易,請勿轉載(
本不富裕的訪問量雪上加霜)
博主首頁:https://wzlodq.blog.csdn.net/
微信公眾號:唔仄lo咚鏘
如果文章對你有幫助,記得一鍵三連?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275764.html
標籤:其他
