使用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]
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
大資料作業(一)基於docker的hadoop叢集環境搭建
主要是根據廈門大學資料庫實驗室的教程(http://dblab.xmu.edu.cn/blog/1233/)在Ubuntu16.04環境下進行搭建。 一、安裝docker(Docker CE) 根據docker官網教程(https://docs.docker.
五行命令使用docker搭建hadoop叢集
前言 如果個人想搭建一個hadoop叢集玩玩,之前都是採用虛擬機器的模式,每個節點都要一套配置,非常的複雜,在網上看到有大佬已經做好了映象和指令碼,拿來五行命令就能使用了! 拉取映象 sudo dock