docker for mac 安装spark 2.2.0 + hadoop 2.8.0 集群

本文介绍如何在Mac上使用Docker快速搭建Spark2.2与Hadoop2.8.1集群,实现Spark on YARN的任务提交。涵盖Docker安装、镜像制作及集群搭建步骤。

1、简述

本文在mac上,使用docker搭建spark 2.2 + hadoop 2.8.1集群,实现spark on yarn的任务提交。

2、docker安装

下载docker for mac 17.06.0-ce-mac19,可通过以下任意一个途径下载:
  • 官网下载:https://www.docker.com/docker-mac
  • 百度网盘下载 链接: http://pan.baidu.com/s/1b9nxZS 密码: ih9m

    下载后,直接双击,和其他mac软件一样安装即可。安装完成后,会多一个docker的图标:
    这里写图片描述
    双击docker的图标即可启动docker:
    这里写图片描述
    为了提高下载镜像的速度,设置国内镜像库:复制地址加速器地址(本文使用中科大的镜像:https://docker.mirrors.ustc.edu.cn),将地址填入Docker的配置中,路径如下:Preferences–>Daemon–>Basic–>Registry mirrors,然后重启。

3、制作镜像

启动docker之后,打开命令行,输入docker pull centos:6 下载centos 6.9;然后输入 docker run –name centos-6.9 -itd centos:6/bin/bash,创建一个容器,进行相关软件安装和环境配置。

1)下载安装包

使用docker cp 命令将以上安装包拷贝到容器根目录

2)进入容器

使用命令docker exec -it containerid /bin/bash进入容器

3)安装ssh等基础服务

curl http://mirrors.aliyun.com/repo/Centos-6.repo > /etc/yum.repos.d/CentOS-Base-6-aliyun.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
yum makecache
yum install -y net-tools which openssh-clients openssh-server iproute.x86_64 wget

修改ssh配置sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config,然后重启ssh 服务service sshd restart
使用passwd设置账号密码为123456
免密码登陆配置cd ~;ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa;cd .ssh;cat id_dsa.pub >> authorized_keys
4)安装jdk
安装命令:rpm -ivh jdk-8u144-Linux-x64.rpm
获取安装目录:update-alternatives --config java
在~/.bashrc中加入

export JAVA_HOME=/usr/Java/jdk1.8.0_144/
export PATH=$JAVA_HOME:$PATH

5)安装scala
解压到scala安装包到/root/.local
在~/.bashrc中加入:

export SCALA_HOME=/root/.local/scala-2.12.3/

6)安装hadoop 2.8.0
1 - 解压安装包到/root/.local

tar xvzf hadoop-2.8.0.tar.gz

2 - 在~/.bashrc中加入:

export PATH=$JAVA_HOME:$PATH
export HADOOP_HOME=/root/.local/hadoop-2.8.0
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

3 - 创建hadoop集群所需目录:

cd $HADOOP_HOME;mkdir tmp;mkdir namenode;mkdir datanode;cd $HADOOP_CONFIG_HOME/

4 - 修改core-site.xml:

<configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/root/.local/hadoop-2.8.0/tmp</value>
            <description>A base for other temporary directories.</description>
    </property>

    <property>
            <name>fs.default.name</name>
            <value>hdfs://master:9000</value>
            <final>true</final>
            <description>The name of the default file system. 
            A URI whose scheme and authority determine the 
            FileSystem implementation. The uri's scheme 
            determines the config property (fs.SCHEME.impl) 
            naming the FileSystem implementation class. The 
            uri's authority is used to determine the host,
            port, etc. for a filesystem.        
            </description>
    </property>
</configuration>

其中,hadoop.tmp.dir配置项值即为此前命令中创建的临时目录路径;fs.default.name配置为hdfs://master:9000,指向的是一个Master节点的主机(后续我们做集群配置的时候,自然会配置这个节点,先写在这里)

5 - 配置hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <final>true</final>
        <description>Default block replication.
        The actual number of replications can be specified when the file is created.
        The default is used if replication is not specified in create time.
        </description>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/root/.local/hadoop-2.8.0/namenode</value>
        <final>true</final>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/root/.local/hadoop-2.8.0/datanode</value>
        <final>true</final>
    </property>
</configuration>

我们后续搭建集群环境时,将配置一个Master节点和两个Slave节点。所以dfs.replication配置为2。
dfs.namenode.name.dir和dfs.datanode.data.dir分别配置为之前创建的NameNode和DataNode的目录路径。

6 - 配置mapred-site.xml:

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>master:9001</value>
        <description>The host and port that the MapReduce job tracker runs
        at.  If "local", then jobs are run in-process as a single map
        and reduce task.
        </description>
    </property>
</configuration>

这里只有一个配置项mapred.job.tracker,我们指向master节点机器。

7 - 配置yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
        <description>Whether virtual memory limits will be enforced for containers</description>
    </property>
</configuration>

yarn.nodemanager.vmem-check-enabled是为了防止启动任务时,报Container [pid=4879,containerID=container_1502105785590_0004_02_000001] is running beyond virtual memory limits. Current usage: 232.7 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.错误

8 - 格式化datanode:

/root/.local/hadoop-2.8.0/bin/hadoop namenode -format

7)安装spark 2.2.0
下载安装包 链接: https://pan.baidu.com/s/1o8iGSWU 密码: kh34。
解压到~/.local/,修改spark-env.sh,末尾增加

export SCALA_HOME=/root/.local/scala-2.12.3/
export JAVA_HOME=/usr/java/jdk1.8.0_144/
export HADOOP_HOME=/root/.local/hadoop-2.8.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/root/.local/spark-2.2.0-bin-without-hadoop
SPARK_DRIVER_MEMORY=1G

slaves文件中加入:

slave01
slave02

8)保存镜像

docker commit -m "centos-6.9 with spark 2.2.0 and hadoop 2.8.0" 67f66c301c35 centos:with-saprk-hadoop

67f66c301c35为容器id
ps: 该镜像已push到hub.docker.com,路径为yaoshengyun/centos,可直接pull。

4、使用保存的镜像,搭建集群

#端口50070和8088,8080是用来在浏览器中访问hadoopyarnsparkWEB界面,这里分别映射到物理机的50070和8088,8080端口。
docker run -itd -P -p 50070:50070 -p 8088:8088 -p 8080:8080 --name master -h master --add-host slave01:172.17.0.4 --add-host slave02:172.17.0.5 centos:with-saprk-hadoop
docker run -itd -P --name slave01 -h slave01 --add-host master:172.17.0.3 --add-host slave02:172.17.0.5  centos:with-saprk-hadoop
docker run -itd -P --name slave02 -h slave02 --add-host master:172.17.0.3 --add-host slave01:172.17.0.4  centos:with-saprk-hadoop

进入容器(如,进入master节点,使用命令docker exec -it master /bin/bash),检查/etc/hosts是否正确,并测试ssh能否免密码登陆
进入master容器,启动hadoop和spark集群:

cd /root/.local/hadoop-2.8.0/sbin;sh start-all.sh   
cd /root/.local/spark-2.2.0-bin-without-hadoop/sbin; sh start-all.sh

如果仅执行提交spark任务到yarn集群,不启动spark集群也没有问题。

5、启动后的效果

成功启动后,以下几个界面:

6、结语

最简单的集群搭建搞定,复杂的一些设置都没有涉及,敬请期待下一篇吧。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值