Docker上搭建Spark集群

640?wx_fmt=png

  Spark推荐系统,干货,心得 

  点击上方蓝字关注~

 

Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。实现快速部署,很适合做项目型的公司

1、Docker安装及配置

环境:Centos7

宿主机操作

yum install -y docker 安装docker

systemctl start docker.service 启动docker服务

docker pull centos 下载镜像

docker run -itd centos 创建第一个容器

docker ps #宿主机查看运行的容器

docker exec -it centos   /bin/bash #进入第一个容器

容器操作

yum -y install openssh-server

yum -y install openssh-clients    #安装ssh服务端及客户端

yum install -y net-tools   #安装net-tools   centos7 ifconfig查看ip用

yum install which -y  #安装which,运行hadoop需要

/usr/bin/sshd     ssh服务打开,并加入开机启动

vi ~/.bashrc   #配置环境变量,添加如下内容

#开机启动sshd服务

/usr/sbin/sshd

#环境变量

export JAVA_HOME=/usr/local/src/jdk1.8.0_144

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib

#HADOOP2.0

export HADOOP_HOME=/usr/local/src/hadoop-2.7.3

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

#SCALA

export SCALA_HOME=/usr/local/src/scala-2.12.3

#SPARK

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

#SBT

export SBT_HOME=//usr/local/src/sbt

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SBT_HOME/bin

退出容器 ctrl +c,并将该容器生成标准镜像

格式:

 docker commit    c1f2903a8aa1(CONTAINER ID,用 docker ps获取)     master( 新的镜像的名字)

使用新镜像生成spark集群三台容器

环境:

172.17.0.2      master

172.17.0.3      slave1

172.17.0.4      slave2

注:由于docker容器空间较小,将宿主机进行文件挂载

docker run  --name master -h master --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host slave2:172.17.0.4   -v /master:/usr/local/src/   -itd  master

#第一台  hostname为master

docker run --name slave1 -h slave1  --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host  slave2:172.17.0.4   -v /slave1:/usr/local/src/     -itd master

#第二台  hostname为slave1

docker run --name slave2 -h slave2  --add-host master:172.17.0.2 --add-host slave1:172.17.0.3 --add-host  slave2:172.17.0.4   -v /slave2:/usr/local/src/     -itd master

#第三台  hostname为slave2

配置ssh免秘登录

分配登录到三台spark集群容器(master、slave1、 slave2)

分别执行ssh-keygen  ,按默认选项

master服务器: 

cd /root/.ssh/

cat id_rsa.pub >authorized_keys

分别到slave1,及slave2服务器

cat id_rsa.pub

复制内容到 master服务器 authorized_keys文件如图:640?wx_fmt=png

然后同步到slave1及slave2服务器

 scp -rp authorized_keys  slave1:~/.ssh/

 scp -rp authorized_keys  slave2:~/.ssh/

到此完毕并验证 ssh免秘钥登录 

2、hadoop安装及配置

环境:

172.17.0.2      master

172.17.0.3      slave1

172.17.0.4      slave2

在宿主机/master (容器master挂载的宿主机节点)文件夹下解压jdk、hadoop安装包

在宿主机进行配置hadoop

cd /master/hadoop-2.7.3/etc/hadoop/

vi hadoop-env.sh 添加 export JAVA_HOME=/usr/local/src/jdk1.8.0_144

vi yarn-env.sh添加 export JAVA_HOME=/usr/local/src/jdk1.8.0_144

slaves配置从节点

• core-site.xml配置下面配置

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

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

<value>file:/usr/local/src/hadoop-2.7.3/tmp</value>

</property>

</configuration>

• 在HAOOP_HOME创建目录:

• ]# mkdir tmp

• ]# mkdir -p dfs/name

• ]# mkdir -p dfs/data

hdfs-site.xml配置下面配置:

<configuration>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master:9001</value>

</property>

<property>

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

<value>file:/usr/local/src/hadoop-2.7.3/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/usr/local/src/hadoop-2.7.3/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

cp mapred-site.xml.template mapred-site.xml

并配置

mapred-site.xml配置

<configuration>

<property>

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

<value>yarn</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.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>master:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>master:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>master:8035</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>yarnmaster:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>master:8088</value>

</property>

</configuration>

配置完毕,将配件文件分发到两台从docker容器对应的宿主机挂载节点

[root@localhost master]# pwd

/master

[root@localhost master]# cp -rm hadoop-2.7.3 /slave1/

[root@localhost master]# cp -rm hadoop-2.7.3 /slave2/

同理把jdk文件也进行拷贝

测试hadoop

]# hadoop namenode -format

]# start-all.sh

640?wx_fmt=png

640?wx_fmt=png

3、SPARK安装及配置

在宿主机/master (容器master挂载的宿主机节点)文件夹下解压spark、scala安装包

cd /master/spark-2.1.1-bin-hadoop2.7/conf/

cp spark-env.sh.template spark-env.sh

vi spark-env.sh   #添加如下内容

export JAVA_HOME=/usr/local/src/jdk1.8.0_144

export SCALA_HOME=/usr/local/src/scala-2.12.3

export HADOOP_HOME=/usr/local/src/hadoop-2.7.3

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

SPARK_MASTER_IP=master

SPARK_LOCAL_DIRS=/usr/local/src/spark-2.1.1-bin-hadoop2.7

SPARK_DRIVER_MEMORY=1G

cp slaves.template slaves  并配置

640?wx_fmt=png

最后将配置好的spark、scala安装目录,分发到slave1/2节点上(跟hadoop、jdk文件拷贝同理)

[root@localhost master]# cp -rp spark-2.1.1-bin-hadoop2.7  /slave1/

[root@localhost master]# cp -rp spark-2.1.1-bin-hadoop2.7  /slave2/

启动spark:进入到spark家目录  执行 ./sbin/start-all.sh640?wx_fmt=png

640?wx_fmt=png

配置主机到 容器的映射(宿主机进行操作)

iptables -t nat -A  DOCKER -p tcp --dport  8088   -j DNAT --to-destination 172.20.0.2:8088

iptables -t nat -A  DOCKER -p tcp --dport  18042   -j DNAT --to-destination 172.17.0.6:8042

iptables -t nat -A  DOCKER -p tcp --dport  18042   -j DNAT --to-destination 172.17.0.6:8042

640?wx_fmt=jpeg

长按识别二维码关注我们

一起来唠唠呗2_06.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值