docker
- Hadoop的集群,我做过一个镜像(这里)
- 然后使用这个镜像分别启动3个容器:1个Master节点,两个Slave节点
- 在Master节点上配置Slave节点信息
- 在Master上启动Hadoop集群
- 在Master上启动Zookeeper集群(这里)
- 在Master上启动Hbase集群(这里)
Scala安装
我使用的是scala-2.12.4.tgz,其他版本请看这里
解压后重命名,接来配置环境变量
编辑配置
vi ~/.bashrc
#scala export SCALA_HOME=/usr/local/hadoop/scala-2.12.4 export PATH=$PATH:$SCALA_HOME/bin生效配置 source ~/.bashrc
Spark安装
我使用的是spark-2.3.0-bin-hadoop2.7,其他版本请看这里
wget http://mirror.bit.edu.cn/apache/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz mv spark-2.3.0-bin-hadoop2.7 spark-2.3.0编辑配置 vi ~/.bashrc
#spark export SPARK_HOME=/usr/local/hadoop/spark-2.3.0 export PATH=$PATH:$SPARK_HOME/bin source ~/.bashrc scala -version
生效配置 source ~/.bashrc
Spark配置
复制配置文件
cp spark-env.sh.template spark-env.sh
vi spark-env.sh配置加入
export JAVA_HOME=/usr/java/jdk1.8.0_131 export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.3 export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.8.3/etc/hadoop export SPARK_HOME=/usr/local/hadoop/spark-2.3.0 export SCALA_HOME=/usr/local/hadoop/scala-2.12.4 export SPARK_MASTER_IP=master export SPARK_EXECUTOR_MEMORY=1G export SPARK_WORKER_CORES=2 export SPARK_WORKER_INSTANCES=1
- JAVA_HOME:Java安装目录
- SCALA_HOME:Scala安装目录
- HADOOP_HOME:hadoop安装目录
- HADOOP_CONF_DIR:hadoop集群的配置文件的目录
- SPARK_MASTER_IP:spark集群的Master节点的ip地址
- SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小
- SPARK_WORKER_CORES:每个worker节点所占有的CPU核数目
- SPARK_WORKER_INSTANCES:每台机器上开启的worker节点的数目
编辑slaves
cp slaves.template slavesvi slaves加入Worker节点如下配置
slave1 slave2
提交docker镜像
docker commit -m "hadoop spark install" 288382f13c7d linux:hadoop
节点 | hostname | ip | 用途 | Docker启动脚本 |
Master | master | 10.0.0.2 | Master |
docker run -p 50070:50070 -p 19888:19888 -p 8088:8088 -p 2181:2181 -p 16010:16010 -p 8080:8080 --name master -ti -h master linux:hadoop |
Slave | slave1 | 10.0.0.3 | Worker |
docker run -it -h slave1 --name slave1 linux:hadoop /bin/bash |
Slave | slave2 | 10.0.0.4 | Worker |
docker run -it -h slave2 --name slave2 linux:hadoop /bin/bash |
这里有几个问题:
- Docker容器中的ip地址是启动之后自动分配的,且不能手动更改
- hostname、hosts配置在容器内修改了,只能在本次容器生命周期内有效。如果容器退出了,重新启动,这两个配置将被还原。且这两个配置无法通过
commit
命令写入镜像
配置hosts
- 通过
ifconfig
命令获取各节点ip。环境不同获取的ip可能不一样,例如我本机获取的ip如下:
- master:172.17.0.2
- slave1:172.17.0.3
- slave2:172.17.0.4
使用
vi /etc/hosts
命令将如下配置写入各节点的hosts文件,注意修改ip地址:172.17.0.2 master 172.17.0.3 slave1 172.17.0.4 slave2
启动sshd /usr/sbin/sshd
启动spark
cd /usr/local/hadoop/spark-2.3.0/sbin ./start-all.sh
注意启动顺序:zookeeper -> Hadoop -> Hbase -> spark
jps查看进程
可以通过Web页面看到查看Master的状态:http://IP:8080