環(huán)境版本
ubuntu 20.04
hadoop 3.2.1
數(shù)據(jù)節(jié)點
hadoop-master 172.20.0.2
hadoop-slave1 172.20.0.3
一主一從 當然你可以配置更多個 我們只這里只配置一個子節(jié)點
Docker 安裝 Ubuntu
docker pull ubuntu? 拉取鏡像
docker run -it --name ubuntu-hadoop ubuntu 啟動一個容器
配置ubuntu
apt update 更新下資源
apt install?openssh-server 安裝ssh?server
service ssh start 啟動ssh?
ps -e | grep ssh 檢測是否啟動ssh?
apt install ssh 安裝客戶端
ssh 密鑰
ssh-keygen -t rsa? 一路回車
完成之后會生成~/.ssh目錄亮曹,目錄下有id_rsa(私鑰文件)和id_rsa.pub(公鑰文件)旺聚,再將id_rsa.pub重定向到文件authorized_keys
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
安裝java環(huán)境
輸入:apt install openjdk-8-jdk
java -version查看下版本 是否安裝成功
which java 查看下運行目錄
下載hadoop
訪問hadoop官網(wǎng)??https://hadoop.apache.org/releases.html
找到對應的hadoop版本 我們這里用的是 3.2.1
apt install wget? 安裝wget
使用wget 下載 等待下載完成
wget?https://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
解壓到目錄
tar -xzvf hadoop-3.2.1.tar.gz -C /opt?
cd opt? 進入目錄 查看下 會擁有?hadoop-3.2.1 目錄
環(huán)境變量
apt install vim 安裝vim工具
vim?~/.bashrc
在文件末尾加入
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/opt/hadoop-3.2.1
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$JAVA_HOME/bin
保存退出?
輸入 source?~/.bashrc 使其生效
生成docker鏡像
首先輸入exit 退出docker?
輸入docker ps? -a 找到剛才生成的容器
輸入 docker commit -m="has update" -a="pengfei" db051fddd2a9 ubuntu/hadoop 生成鏡像
輸入 docker? images 查看下生成的鏡像
配置集群容器
輸入 docker network create --subnet=172.20.0.0/16 hadoop? 創(chuàng)建一個network組
然后依次啟動 master 和?slave
啟動master 主容器
docker run -d --privileged -ti --name hdp-master -h hdp-master -p 19870:9870 -p 18088:8088 --net hadoop --ip 172.20.0.2 ubuntu/hadoop /bin/bash
啟動slave 子節(jié)點容器
docker run -d --privileged -ti? --name hdp-slave1 -h hdp-slave1 -p 19864:9864 --net hadoop? --ip 172.20.0.3 ubuntu/hadoop /bin/bash
hadoop設置
進入主節(jié)點 master 容器
docker exec -it ab647fc9c395 /bin/bash
啟動下ssh?
service ssh start
進入配置目錄
cd opt/hadoop-3.2.1/etc/hadoop/
編輯?vim hadoop-env.sh
最后插入?export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64?
編輯?vim hdfs-site.xml?
<configuration>
<property>
? ? ? ? <name>dfs.replication</name>
? ? ? ? <value>2</value>
? ? ? ? <final>true</final>
</property>
<property>
? ? ? ? <name>dfs.namenode.name.dir</name>
? ? ? ? <value>/opt/hadoop-3.2.1/namenode</value>
? ? ? ? <final>true</final>
</property>
<property>
? ? ? ? <name>dfs.datanode.name.dir</name>
? ? ? ? <value>/opt/hadoop-3.2.1/datanode</value>
? ? ? ? <final>true</final>
</property>
</configuration>
編輯?mapred-site.xml
<configuration>
<property>
? ? ? ? <name>mapred.job.tarcker</name>
? ? ? ? <value>hdp-master:9001</value>
</property>
</configuration>
編輯?vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
?? <name>yarn.resourcemanager.hostname</name>
?? <value>hdp-master</value>
?</property>
<property>
?? <name>yarn.resourcemanager.webapp.address</name>
?? <value>hdp-master:8088</value>
?</property>
</configuration>
編輯?vim core-site.xml
<configuration>
<property>
? ? ? ? <name>hadoop.tmp.dir</name>
? ? ? ? <value>/opt/hadoop-3.2.1/tmp</value>
? ? ? ? <description>A base for other temporary directories.</description>
? ? </property>
? ? <!-- file system properties -->
? ? <property>
? ? ? ? <name>fs.default.name</name>
? ? ? ? <value>hdfs://hadoop-master:9000</value>
? ? </property>
</configuration>
編輯主節(jié)點?workers
hdp-slave1?
設置hosts
由于/etc/hosts文件在容器啟動時被重寫表制,直接修改內(nèi)容在容器重啟后不能保留雄驹,為了讓容器在重啟之后獲取集群hosts 啟動容器后重寫hosts的方法兜挨。
編輯?vim ~/.bashrc?
在底部添加以下內(nèi)容
:>/etc/hosts
cat >>/etc/hosts<<EOF
127.0.0.1? ? ? localhost
::1? ? localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.2? ? ? hdp-master
172.20.0.3? ? ? hdp-slave1
EOF
保存之后?
輸入 source ~/.bashrc?
分發(fā)配置到子節(jié)點
新開一個shell 窗口 進入 子節(jié)點docker
docker exec -it?db051fddd2a9 /bin/bash
各自生成的docker id 是不同的 別傻傻的粘貼
service ssh start? 最好設置成啟動docker 時就運行
?加入到vim ~/.bashrc 中?
在master 輸入?ssh root@hdp-slave1? 應該不需要密碼即可鏈接
分發(fā)master配置文件?bashrc
scp ~/.bashrc? root@hdp-slave1:~/.bashrc
分發(fā)master hadoop 配置文件到子節(jié)點
scp -r /opt/hadoop-3.2.1/etc/hadoop/ root@hdp-slave1:/opt/hadoop-3.2.1/etc/
完成之后 主從配置內(nèi)容應是一樣的
Hadoop 啟動
hadoop namenode -format? 格式化namenode
進入cd /opt/hadoop-3.2.1/sbin
修改? vim start-dfs.sh ,?vim stop-dfs.sh?添加
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
編輯??vim start-yarn.sh ,vim stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root
輸入 start-all.sh 啟動hadoop
輸入jps?
http://ip:18088
http://ip:19870
http://ip:19864
其他工具
apt install wget?
apt install curl?
apt install lsof 查看進程工具