1. 程式人生 > >使用docker搭建彈性hadoop叢集

使用docker搭建彈性hadoop叢集

一.ubuntu環境(ubuntu server 16.04):

1.安裝docker: apt install docker-io

2.在docker容器中安裝ubuntu環境:

2.1 修改(不是必須的): vim /etc/default/docker 在最後新增以下兩行:

export http_proxy="http://127.0.0.1:3128/"

export https_proxy="https://127.0.0.1:3128/"

2.2 下載映象: docker pull ubuntu

2.3 在宿主機:本機/root/docker/config放入需要掛在的安裝檔案:

[email protected]

:~/docker/config# ls

apache-hive-2.1.0-bin.tar.gz  hadoop-2.7.2.tar.gz     hosts           jdk-8u91-linux-x64.tar.gz           spark-2.0.0-bin-hadoop2.7.tgz

authorized_keys

2.4 執行容器並掛載檔案: docker run -v /root/docker/config:/software -it ubuntu

2.5 在容器裡更新版本:

2.5.1 apt-get update 

2.5.2 apt-get upgrade

2.5.3 安裝vim: apt-get install vim

2.5.4 安裝ssh: apt-get install ssh

2.5.5 讓ssh自動啟動:

2.5.5.1 增加:vim ~/.bashrc 新增: /usr/sbin/sshd

2.5.5.2 增加:vim /etc/rc.local : /usr/sbin/sshd

2.5.5.3 修改為遠端可登入: 

2.5.6 啟動ssh: /etc/inid.s/ssh start

2.5.7 驗證: ssh localhost date

3.安裝jdk:

3.1 建立資料夾: mkdir -p /usr/local/jdk

3.2 解壓縮: tar zxvf /software/jdk-8u91-linux-x64.tar.gz -C /usr/local/jdk/

3.3 配置環境:

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_91/bin

4.安裝zookeeper:

4.1 建立資料夾: mkdir -p /usr/local/zookeeper

4.2 解壓縮: tar zxvf /software/zookeeper-3.4.8.tar.gz -C /usr/local/zookeeper/

4.3 配置環境:

export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.8/bin

4.4 cp ./conf/zoo_sample.sh ./conf/zoo.sh

4.5 vim ./conf/zoo.sh

4.5.1 修改目錄:

dataDir=/usr/local/zookeeper/zookeeper-3.4.8/tmp

4.5.2 新增:

server.1=cloud4:2888:3888

server.2=cloud5:2888:3888

server.3=cloud6:2888:3888

server.4=cloud7:2888:3888

server.5=cloud8:2888:3888

4.6 mkdir -p tmp

4.7 echo 1 > ./tmp/myid

5.安裝hadoop

5.1 建立資料夾: mkdir -p /usr/local/hadoop

5.2 解壓縮: tar -zxvf /software/hadoop-2.7.2.tar.gz -C /usr/local/hadoop/

5.3 配置環境變數:

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2/bin

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2/sbin

5.4 修改hadoop配置檔案:~# cd /usr/local/hadoop/hadoop-2.7.2/etc/hadoop/

5.4.1 hadoop# vim hadoop-env.sh  

#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_91

5.4.2 hadoop# vim core-site.xml 

<configuration>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://ns1</value>

        </property>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>/usr/local/hadoop/hadoop-2.7.2/tmp</value>

        </property>

        <property>

                <name>ha.zookeeper.quorum</name>

                <value>cloud4:2181,cloud5:2181,cloud6:2181</value>

        </property>

</configuration>

5.4.3 hadoop# vim hdfs-site.xml

<configuration>

        <property>

                <name>dfs.nameservices</name>

                <value>ns1</value>

        </property>

        <property>

                <name>dfs.ha.namenodes.ns1</name>

                <value>nn1,nn2</value>

        </property>

        <property>

                <name>dfs.namenode.rpc-address.ns1.nn1</name>

                <value>cloud1:9000</value>

        </property>

        <property>

                <name>dfs.namenode.http-address.ns1.nn1</name>

                <value>cloud1:50070</value>

        </property>

        <property>

                <name>dfs.namenode.rpc-address.ns1.nn2</name>

                <value>cloud2:9000</value>

        </property>

        <property>

                <name>dfs.namenode.http-adress.ns1.nn2</name>

                <value>cloud2:50070</value>

        </property>

        <property>

                <name>dfs.namenode.shared.edits.dir</name>

                <value>qjournal://cloud4:8485;cloud5:8485;cloud6:8485/ns1</value>

        </property>

        <property>

                <name>dfs.journalnode.edits.dir</name>

                <value>/usr/local/hadoop/hadoop-2.7.2/journal</value>

        </property>

        <property>

                <name>dfs.ha.automatic-failover.enabled</name>

                <value>true</value>

        </property>

        <property>

                <name>dfs.client.failover.proxy.provider.ns1</name>

                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

        </property>

        <property>

                <name>dfs.ha.fencing.methods</name>

                <value>

                sshfence

                shell(/bin/true)

                </value>

        </property>

        <property>

                <name>dfs.ha.fencing.ssh.private-key-files</name>

                <value>/root/.ssh/id_rsa</value>

        </property>

        <property>

                <name>dfs.ha.fencing.ssh.connect-timeout</name>

                <value>30000</value>

        </property>

</configuration>

5.4.4 hadoop# cp mapred-site.xml.template mapred-site.xml

5.4.4.1 vim hadoop# vim mapred-site.xml

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

</configuration>

5.4.5 hadoop# vim yarn-site.xml 

<configuration>

<!-- Site specific YARN configuration properties -->

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>cloud3</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

5.4.6 hadoop# vim slaves

cloud1

cloud2

cloud3

cloud4

cloud5

cloud6

cloud7

cloud8

6.安裝spark

6.1建立資料夾: mkdir /usr/local/spark

6.2解壓縮: # tar -zxvf /software/spark-2.0.0-bin-hadoop2.7.tgz -C /usr/local/spark/

6.3配置環境變數: 

export SPARK_HOME=/usr/local/spark/spark-2.0.0-bin-hadoop2.7/bin

export SPARK_HOME=/usr/local/spark/spark-2.0.0-bin-hadoop2.7/sbin

6.4 修改配置檔案:

6.4.1 spark-2.0.0-bin-hadoop2.7# cp ./conf/slaves.template ./conf/slaves

6.4.1.1 spark-2.0.0-bin-hadoop2.7# vim ./conf/slaves

cloud1

cloud2

cloud3

cloud4

cloud5

cloud6

cloud7

cloud8

6.4.2 spark-2.0.0-bin-hadoop2.7# cp ./conf/spark-env.sh.template ./conf/spark-env.sh

6.4.2.1 spark-2.0.0-bin-hadoop2.7# vim ./conf/spark-env.sh

export SPARK_MASTER_IP=cloud1

export SPARK_WORKER_MEMORY=128m

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_91

export SCALA_HOME=/usr/local/scala/scala-2.10.6

export SPARK_HOME=/usr/local/spark/spark-2.0.0-bin-hadoop2.7

export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.2/etc/hadoop

export SPARK_LIBRARY_PATH=$SPARK_HOME/lib

export SCALA_LIBRARY_PATH=$SPARK_LIBRARY_PATH

export SPARK_WORKER_CORES=1

export SPARK_WORKER_INSTANCES=1

export SPARK_MASTER_PORT=7077

6.4.3 spark-2.0.0-bin-hadoop2.7# cp ./conf/spark-defaults.conf.template ./conf/spark-defaults.conf

6.4.3.1 spark-2.0.0-bin-hadoop2.7# vim ./conf/spark-defaults.conf

spark.executor.extraJavaOptions         -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

spark.eventLog.enabled                  true

spark.eventLog.dir                      hdfs://clud1:9000/historyServerforSpark

spark.yarn.historyServer.address        cloud1:18080

spark.history.fs.logDirectory           hdfs://cloud1:9000/historyServerforSpark

#spark.default.parallelism              100

7.在宿主機中打包成映象:

7.1 [email protected]:~# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

11ade06a603a        ubuntu              "/bin/bash"         26 hours ago        Up 51 minutes                           ha

7.2 docker commit containerId => eg: docker commit 11ade06a603a

7.3 生成新的id:[email protected]:~# docker commit 11ade06a603a

sha256:7af39a0bd16940cd1ebac52ace40048b223686ccef618584004b82002eb7cb80

7.4 生成新image映象:docker tag 7af39a0bd16940cd1ebac52ace40048b223686ccef618584004b82002eb7cb80 bigdata/ha1.0

7.5 檢視生成的映象:[email protected]:~# docker images

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE

bigdata/ha1.0          latest              7af39a0bd169        3 minutes ago       1.997 GB

8.使用上面生成的映象分別來執行8個容器,分別是:cloud1~cloud8

[email protected]:~# docker run --name cloud1 -h cloud1 -it bigdata/ha1.0

....

[email protected]:~# docker run --name cloud8 -h cloud8 -it bigdata/ha1.0

9.啟動服務

9.1 在cloud5~cloud8中的zookeeper中分別修改myid:

cloud5: zookeeper-3.4.8# echo 2 > ./tmp/myid 

cloud6: zookeeper-3.4.8# echo 3 > ./tmp/myid

cloud7: zookeeper-3.4.8# echo 4 > ./tmp/myid

cloud8: zookeeper-3.4.8# echo 5 > ./tmp/myid

9.2 在cloud1中修改hosts檔案:

172.17.0.1 cloud1

172.17.0.2 cloud2

172.17.0.3 cloud3

172.17.0.4 cloud4

172.17.0.5 cloud5

172.17.0.6 cloud6

172.17.0.7 cloud7

172.17.0.8 cloud8

9.2.1 把hosts檔案同步到其它容器:

scp /etc/hosts cloud1:/etc/

...

scp /etc/hosts cloud8:/etc/

9.3 啟動zookeeper叢集:

9.3.1 分別在cloud4~cloud8容器中啟動:zkServer.sh start

9.3.2 檢視啟動狀態: zkServer.sh status

9.4 在cloud1上啟動journalnode:hadoop-2.7.2# hadoop-daemons.sh start journalnode

9.5 在cloud1上格式化:hdfs: hadoop-2.7.2# hdfs namenode -format

9.6 在cloud1上格式化ZK:hadoop-2.7.2# hdfs zkfc -formatZK 

9.7 在cloud1上啟動hdfs: hadoop-2.7.2# start-dfs.sh 

9.8 在cloud3上啟動yarn: hadoop-2.7.2# start-yarn.sh

9.9 在cloud1~cloud2上啟動spark叢集:spark-2.0.0-bin-hadoop2.7/sbin# start-all.sh 

10.啟動服務後開啟瀏覽器訪問:

hdfs:cloud1:50070

yarn:cloud2:8088

spark:coud1:18080

11.在宿主機中訪問需要在hosts中配置主機名與對映ip

12.打成新的映象:

12.1 在cloud4~cloud8任一容器中hadoop目錄下journal目錄複製到cloud1相關目錄

hadoop-2.7.2# scp -r journal/ cloud1:/usr/local/hadoop/hadoop-2.7.2/

12.2 將完成配置的cloud1容器生成一個新的映象:

12.3 docker commit cloud1

12.4 docker tag id bigdata/ha2.0

13.完成後可以直接使用這個映象執行容器:zookeeper,hadoop,spark

2.5.8 驗證:ssh cloud1....cloud6

jiangshides-MacBook-Pro:docker Apple$ ls

install

jiangshides-MacBook-Pro:docker Apple$ vim install 

bigdata/ha1.0          latest              7af39a0bd169        3 minutes ago       1.997 GB

8.使用上面生成的映象分別來執行8個容器,分別是:cloud1~cloud8

[email protected]:~# docker run --name cloud1 -h cloud1 -it bigdata/ha1.0

....

[email protected]:~# docker run --name cloud8 -h cloud8 -it bigdata/ha1.0

9.啟動服務

9.1 在cloud5~cloud8中的zookeeper中分別修改myid:

cloud5: zookeeper-3.4.8# echo 2 > ./tmp/myid

cloud6: zookeeper-3.4.8# echo 3 > ./tmp/myid

cloud7: zookeeper-3.4.8# echo 4 > ./tmp/myid

cloud8: zookeeper-3.4.8# echo 5 > ./tmp/myid

9.2 在cloud1中修改hosts檔案:

172.17.0.1 cloud1

172.17.0.2 cloud2

172.17.0.3 cloud3

172.17.0.4 cloud4

172.17.0.5 cloud5

172.17.0.6 cloud6

172.17.0.7 cloud7

172.17.0.8 cloud8

9.2.1 把hosts檔案同步到其它容器:

scp /etc/hosts cloud1:/etc/

...

scp /etc/hosts cloud8:/etc/

9.3 啟動zookeeper叢集:

9.3.1 分別在cloud4~cloud8容器中啟動:zkServer.sh start

9.3.2 檢視啟動狀態: zkServer.sh status

9.4 在cloud1上啟動journalnode:hadoop-2.7.2# hadoop-daemons.sh start journalnode

9.5 在cloud1上格式化:hdfs: hadoop-2.7.2# hdfs namenode -format

9.6 在cloud1上格式化ZK:hadoop-2.7.2# hdfs zkfc -formatZK

9.7 在cloud1上啟動hdfs: hadoop-2.7.2# start-dfs.sh

9.8 在cloud3上啟動yarn: hadoop-2.7.2# start-yarn.sh

9.9 在cloud1~cloud2上啟動spark叢集:spark-2.0.0-bin-hadoop2.7/sbin# start-all.sh

10.啟動服務後開啟瀏覽器訪問:

hdfs:cloud1:50070

yarn:cloud2:8088

spark:coud1:18080

11.在宿主機中訪問需要在hosts中配置主機名與對映ip

12.打成新的映象:

12.1 在cloud4~cloud8任一容器中hadoop目錄下journal目錄複製到cloud1相關目錄

hadoop-2.7.2# scp -r journal/ cloud1:/usr/local/hadoop/hadoop-2.7.2/

12.2 將完成配置的cloud1容器生成一個新的映象:

12.3 docker commit cloud1

12.4 docker tag id bigdata/ha2.0

13.完成後可以直接使用這個映象執行容器:zookeeper,hadoop,spark

2.5.8 驗證:ssh cloud1....cloud8

相關推薦

使用docker搭建彈性hadoop叢集

一.ubuntu環境(ubuntu server 16.04): 1.安裝docker: apt install docker-io 2.在docker容器中安裝ubuntu環境: 2.1 修改(不是必須的): vim /etc/default/docker 在最後新增以下

docker 搭建pxc Mysql叢集

轉自:https://www.cnblogs.com/zhenghongxin/p/9228101.html docker基本指令: 更新軟體包 yum -y update 安裝Docker虛擬機器(centos 7) yum install -y docker 執行、重啟、

使用docker-compose建立hadoop叢集

下載docker映象 首先下載需要使用的五個docker映象 docker pull bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8 docker pull bde2020/hadoop-datanode:1.1.0-hadoop2

用虛擬機器簡單搭建一個hadoop叢集(Linux)

一,前提 1. 安裝好一臺Linux的虛擬機器(我用的純粹的黑框框) 2.  修改好IP地址並安裝jdk  (我這裡安裝的是1.8版本的)  vi /etc/sysconfig/network-scripts/ifcfg-eth0 重啟網路生效     s

從零搭建生產Hadoop叢集(七)——關鍵伺服器雙網絡卡配置

一、概述 Hadoop叢集中,有許多伺服器部署著關鍵例項,如NameNode、ResourceManager、Zookeeper等,這些服務的穩定執行對叢集健康具有重要意義。雖然這些服務基本上都會做多例項高可用部署,但是若連線的是同個交換機,萬一交換機發生故障

D001.5 Docker搭建大資料叢集環境(基礎篇)

0x00 教程內容 0x01 Docker的安裝 1. 2. 3. 0x02 Docker的簡單操作 1. 2. 3. 0x03 Docker資料卷 Docker的資料卷與Centos的

從零搭建生產Hadoop叢集(八)——上線與下線資料節點流程

一、概述 Hadoop叢集中,經常需要在不重啟叢集的前提下,動態地上線與下線資料節點,而使用Cloudera Manager管理的叢集,可以很方便地做到這一點,本文將介紹其相關流程。 二、節點上線流程 1. 伺服器初始化 新節點的硬體配置最好能夠跟原叢集伺服器

docker入門到使用docker搭建redis哨兵叢集(待整理)

安裝docker #檢視版本 uname -r #Docker 執行在 CentOS 7 上,要求系統為64位、系統核心版本為 3.10 以上。 #Docker 執行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統為64位、系統核心版本

springboot連線基於docker搭建的redis叢集

祝願明天考研的同學都能考上 環境:win10 /Docker for windows/docker redis叢集 由於redis叢集每次重新cluster nodes會更新spring boot配置的spring.redis.cluster.nodes。docker容器與本地宿主機不在

從零搭建生產Hadoop叢集(三)——CDH叢集搭建

一、概述 繼本系列前兩篇文章講到的離線安裝YUM源搭建及規劃與環境準備,本文開始講述CDH叢集的搭建步驟及注意要點。本文基於CentOS7進行部署,Cloudera Manager版本選擇5.8.1,CDH版本5.8.0。 二、硬體檢查與系統配置 1.硬體檢查

利用Docker搭建MongoDB副本叢集

步驟如下(1master,2slave為例): 先拉取mongod映象 啟動三個mongo容器: sudo docker run –name mongo_server1 -p 21117:27017 -d 127.0.0.1:5000/mongod:la

Docker搭建MySQL主從叢集

        關於MySQL主從模式,如果我們直接在本機上搭建的話,是沒法搭建的,只能藉助於虛擬機器,但有的時候我們又需要搭建一

Docker 搭建 Redis Cluster 叢集環境

  使用 Docker 搭建 Redis Cluster,最重要的環節就是容器通訊的問題,這一塊我們在之前的文章中已經給大家解決了《Docker 網路模式詳解及容器間網路通訊》,本篇文章主要練習使用多個容器完成 Redis Cluster 叢集環境的搭建,順便為學習 Docker Compose 鋪鋪路。俗話

docker搭建Hadoop叢集

前提:jdk和ssh服務都已經安裝完成,如未完成,請參考博主所寫部落格 1、建立映象容器 -P將容器的所有埠對映到主機埠 docker run -itd -v /c/Users:/root/build -P -h master --name master --net mynetwork --

hadoop叢集搭建docker

背景     目前在一家快遞公司工作,因專案需要,對大資料平臺做個深入的瞭解。工欲利其器必先利其器,在網上找了許多教程,然後自己搭建一個本地的環境並記錄下來,增加一些印象。 環境搭建 1)Ubuntu   docker pull ubuntu:16.04 docker images&nb

基於Centos7+Docker 搭建hadoop叢集

總體流程: 獲取centos7映象 為centos7映象安裝ssh 使用pipework為容器配置IP 為centos7映象配置java、hadoop 配置hadoop 1.獲取centos7映象 $ docker pull centos:7 //檢視當前已下載docke

docker環境下搭建hadoop叢集(ubuntu16.04 LTS系統)

我的思路是這樣: 安裝ubuntu系統---->下載docker---->在docker里拉取hadoop映象---->在此映象裡建立三個容器(Master、Slave1、Slave2)---->完成完全分散式 1.   安裝ubuntu系統(無論你

Ubuntu Docker 搭建Hadoop分散式叢集

確保您擁有 root 許可權 , 凡是{} 包含的內容, 都是您需要更改的 apt install docker docker pull ubuntu:16.04 docker r

大資料作業(一)基於dockerhadoop叢集環境搭建

主要是根據廈門大學資料庫實驗室的教程(http://dblab.xmu.edu.cn/blog/1233/)在Ubuntu16.04環境下進行搭建。 一、安裝docker(Docker CE) 根據docker官網教程(https://docs.docker.

五行命令使用docker搭建hadoop叢集

前言 如果個人想搭建一個hadoop叢集玩玩,之前都是採用虛擬機器的模式,每個節點都要一套配置,非常的複雜,在網上看到有大佬已經做好了映象和指令碼,拿來五行命令就能使用了! 拉取映象 sudo dock