銀河麒麟 arm架構 ubuntu docker制作hadoop鏡像


接上文:https://www.cnblogs.com/erlou96/p/13856089.html

根據上文的jdk的docker鏡像,來制作hadoop大數據docker鏡像


 

一: 基礎環境准備

  • open-jdk1.8的docker鏡像(上文已制作好)
  • hadoop-3.2.1(自行網上下載)

 

二: Hadoop安裝包配置修改

新建目錄:

mkdir -p /opt/docker-file/ubuntu-ssh-jdk-hadoop

 

將hadoop安裝包放到目錄下:

cp -r hadoop-3.2.1.tar.gz /opt/docker-file/ubuntu-ssh-jdk-hadoop

 

解壓hadoop安裝包:

tar -zxvf hadoop-3.2.1.tar.gz

 

修改$HADOOP_HOME/etc/hadoop 目錄下的配置文件

  • 修改hadoop-env.sh

插入如下:

export JAVA_HOME=/usr/java/jdk export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
  • 修改core-site.xml

內容如下:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>
  • 修改hdfs-site.xml

內容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/mnt/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/mnt/hadoop/hdfs/data</value>
    </property>
</configuration>
  • 修改mapred-site.xml
<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.application.classpath</name>
    <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
  </property>
</configuration>
  • 修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME</value>
    </property>
</configuration>

 

  • 修改workers文件
master
slave1
slave2

 

修改$HADOOP_HOME/sbin 目錄下的啟動腳本

  • 修改start-dfs.sh和stop-dfs.sh(頂部添加即可)
HDFS_NAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_SECONDARYNAMENODE_USER=root YARN_RESOURCEMANAGER_USER=root YARN_NODEMANAGER_USER=root
  • 修改start-yarn.sh 和 stop-yarn.sh (頂部添加即可)
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root

 

刪除$HADOOP_HOME/share/doc 目錄

rm -rf /opt/docker-file/ubuntu-ssh-jdk-hadoop/hadoop-3.2.1/share/doc

 

重新歸檔壓縮hadoop

tar -czvf hadoop.tar.gz hadoop-3.2.1

 

三: 編寫Dockerfile文件

Dockerfile文件內容如下:

# 選擇一個已有的os鏡像作為基礎 FROM ubuntu-ssh-jdk:v1 # 鏡像的作者 MAINTAINER hanzhe # ADD命令 將jdk打包文件上傳到鏡像的/usr/java ,會自動解壓 ADD hadoop.tar.gz /opt # 配置java環境變量 ENV JAVA_HOME /usr/java/jdk ENV PATH $JAVA_HOME/bin:$PATH RUN mv /opt/hadoop-3.2.1 /opt/hadoop \ && mkdir -p /mnt/hadoop/hdfs/name \ && mkdir -p /mnt/hadoop/hdfs/data \ && mkdir -p /mnt/hadoop/tmp ENV HADOOP_HOME /opt/hadoop ENV PATH $HADOOP_HOME/bin:$PATH

 

四: 構建docker image

構建命令:

docker build -t="ubuntu-ssh-jdk-hadoop:v1" .

 

五: 查看docker image

docker images

 

 

六: 配置docker網絡

 參考本人另一篇博客:https://www.cnblogs.com/erlou96/p/12113408.html

 

七: 啟動容器

#啟動master容器
docker run --name master --add-host slave1:172.172.0.11 --add-host slave2:172.172.0.12 --net docker-br0 --ip 172.172.0.10 --hostname master -d -P ubuntu-ssh-jdk-hadoop:v1

#啟動slave1容器
docker run --name slave1 --add-host master:172.172.0.10 --add-host slave2:172.172.0.12 --net docker-br0 --ip 172.172.0.11 --hostname slave1 -d -P ubuntu-ssh-jdk-hadoop:v1

#啟動slave2容器
docker run --name slave2 --add-host master:172.172.0.10 --add-host slave2:172.172.0.11 --net docker-br0 --ip 172.172.0.12 --hostname slave2 -d -P ubuntu-ssh-jdk-hadoop:v1

 

(別人的方案)給容器設置固定IP

  • 安裝pipework
  1. 下載pipework
  2. 下載地址:https://github.com/jpetazzo/pipework.git
  3. 把下載的zip包上傳到宿主機服務器上,解壓,改名字
#解壓
unzip pipework-master.zip
#重命名 mv pipework
-master pipework
#拷貝環境變量 cp
-rp pipework/pipework /usr/local/bin/

 

  • 安裝bridge-utils
apt install bridge-utils

 

  • 創建網絡
brctl addbr br1 ip link set dev br1 up ip addr add 192.168.2.1/24 dev br1

 

  • 給容器設置固定ip
pipework br1 master 192.168.2.10/24 pipework br1 slave1 192.168.2.11/24 pipework br1 slave2 192.168.2.12/24

 

  • 如果容器被移除,有重新啟動,需要將對應的虛擬網卡卸載掉
 # 因為重新啟動的docker容器mac地址不一樣,所以主機名雖然對應,但仍無法ping通 
ifconfig XXXX down

# 重新分配固定ip
pipework br1 master 192.168.2.10/24
  • 驗證

能ping通,就說明沒問題!

 

七: 設置ssh免密碼登錄

進入容器

docker exec -it master /bin/bash

 

ssh-keygen -t rsa(一直按回車即可)

分發秘鑰

ssh-copy-id master

 

八:啟動服務

啟動偽分布式hadoop集群:

#進入目錄
cd /opt/hadoop/sbin/

 

啟動hdfs:

./start-dfs.sh

 

啟動yarn:

./start-yarn.sh

 

如果啟動報錯,原因有如下幾個:

 

jps 查看服務進程

 

 

 

好了:到此搭建hadoop集群,到此為止!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM