docker images
如果当前本地仓库中没有ubuntu镜像,可以从远程仓库中拉取(https://hub.docker.com)
或者使用其他ubuntu镜像,如
docker pull daocloud.io/ubuntu
使用ubuntu镜像创建一个容器,并进入
docker run -it daocloud.io/ubuntu /bin/bash
exit
apt-get install software-properties-common python-software-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
update-java-alternatives -s java-8-oracle
java –version
安装vim文本编辑器
apt-get install vim
配置java环境变量(以后的环境变量也这样配置)。使用命令:
vim /etc/profile
增加如下字段
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存并退出(escàshift : àwqàenter)
使环境变量生效
source /etc/profile
检查是否生效
至此已配好java环境,将此时容器的状态保存为镜像。
另起一个窗口ssh进gpu01结点,使用docker ps命令查看当前运行的容器,可以看到容器的ID为75bea785a41e。
使用上面的ID提交镜像,为镜像取一个名字
docker commit 75bea785a41e 902chenjie/ubuntu_java
查看镜像
docker images
下载hadoop安装包(如果下面的地址下载不了,可以到http://archive.apache.org/dist/hadoop/common/找到所有版本的下载地址)
wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
解压安装包
tar -zxvf hadoop-2.7.6.tar.gz
下载spark安装包并解压(如果下面的地址下载不了,可以到http://archive.apache.org/dist/spark/找到所有版本的下载地址)
wget http://mirrors.shu.edu.cn/apache/spark/spark-2.0.2/spark-2.0.2-bin-hadoop2.7.tgz
tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
下载scala安装包并解压
wget https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz
tar -zxvf scala-2.11.11.tgz
下载hive安装包并解压(如果下面的地址下载不了,可以到http://archive.apache.org/dist/hive找到所有版本的下载地址)
wget http://mirrors.shu.edu.cn/apache/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz
tar -zxvf apache-hive-2.3.3-bin.tar.gz
下载hbase安装包并解压(如果下面的地址下载不了,可以到http://archive.apache.org/dist/hbase找到所有版本的下载地址)
wget http://mirrors.shu.edu.cn/apache/hbase/1.2.6/hbase-1.2.6-bin.tar.gz
tar -zxvf hbase-1.2.6-bin.tar.gz
下载zookeeper(如果下面的地址下载不了,可以到http://archive.apache.org/dist/zookeeper找到所有版本的下载地址)
wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar -zxvf zookeeper-3.4.11.tar.gz
可选:删掉安装包
至此我们解压的软件及版本如下:
apache-hive-2.3.3-bin
hadoop-2.7.6
hbase-1.2.6
scala-2.11.11
spark-2.0.2-bin-hadoop2.7
zookeeper-3.4.11
vim /etc/profile
增加如下内容:
#zookeeper
export ZOOKEEPER_HOME=/root/zookeeper-3.4.11
export PATH=$ZOOKEEPER_HOME/bin:$PATH
#hadoop
export HADOOP_HOME=/root/hadoop-2.7.6
export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#scala
export SCALA_HOME=/root/scala-2.11.11
export PATH=${SCALA_HOME}/bin:$PATH
#spark
export SPARK_HOME=/root/spark-2.0.2-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH
#hive
export HIVE_HOME=/root/apache-hive-2.3.3-bin
export PATH=$PATH:$HIVE_HOME/bin
#hbase
export HBASE_HOME=/root/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin
保存并退出
使环境变量生效
source /etc/profile
验证
hadoop
安装网络工具,以方便后面配置集群网络
apt-get install net-tools
apt-get install inetutils-ping
安装SSH服务
更新下软件库
apt-get update
安装ssh服务
apt-get install openssh-server
启动服务
service ssh start
查看服务是否启动
ps -e |grep ssh
生成公钥(一路回车)
ssh-keygen -t rsa
将本机公钥放到本机认证的密钥中,使得本机ssh本机不需要密码
cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
ssh本机测试
ssh localhost
切换到hadoop配置文件目录
cd ~/hadoop-2.7.6/etc/hadoop/
修改core-site.xml如下:
fs.defaultFS
hdfs://localhost:9000
io.file.buffer.size
4096
hadoop.tmp.dir
/tmp
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
修改hadoop-env.sh
vim hadoop-env.sh
增加:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
修改hdfs-site.xml
vim hdfs-site.xml
增加如下内容:
dfs.replication
2
dfs.namenode.name.dir
/root/hadoop-2.7.6/hdfs/name
dfs.datanode.data.dir
/root/hadoop-2.7.6/hdfs/data
dfs.permissions
false
修改mapred-site.xml
vim mapred-site.xml
增加如下内容:
mapreduce.framework.name
yarn
修改slaves文件,记录hadoop的datanode地址
vim slaves
增加如下内容:
localhost
修改yarn-site.xml
vim yarn-site.xml
增加如下内容:
The hostname of the RM.
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
切换到spark配置文件目录
cd ~/spark-2.0.2-bin-hadoop2.7/conf
修改slaves文件
vim slaves
增加如下内容:
localhost
修改spark-defaults.conf
vim spark-defaults.conf
增加如下内容:
spark.master spark://localhost:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://localhost:9000/historyserverforSpark
spark.yarn.historyServer.address localhost:18080
spark.history.fs.logDirectory hdfs://localhost:9000/historyserverforSpark
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 4g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
修改spark-env.sh
vim spark-env.sh
增加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/root/scala-2.11.11
export HADOOP_HOME=/root/hadoop-2.7.6
export HADOOP_CONF_DIR=/root/hadoop-2.7.6/etc/hadoop
export SPARK_MASTER_IP=localhost
export SPARK_WORKER_MEMORY=4g
export SPARK_EXECUTOR_MEMORY=4g
export SPARK_DRIVER_MEMORY=4g
export SPARK_WORKER_CORES=2
export SPARK_MEM=4G
保存当前准备好安装包的容器状态镜像,以后配置集群每个节点都在此镜像上修改配置。
在另一个窗口
docker commit 75bea785a41e 902chenjie/ubuntu_bigdata
使用此前保存的本地镜像创建几个容器,其中一个作为master,另外几个作为slave。
以2台结点的集群创建为例:
分别新建3个ssh连接到gpu01结点,每个连接创建1个容器,共创建3个容器:
docker run -it 902chenjie/ubuntu_bigdata /bin/bash
可以看到三个容器的主机名分别为d6ab2641dcf3、a15ae831e68b、207343b5d21d
对于每个容器,查看其IP,执行
ifconfig
整理得到IP地址、主机名对应列表
计划作为master 172.17.0.19 d6ab2641dcf3
计划作为slave 172.17.0.21 a15ae831e68b
计划作为slave 172.17.0.25 207343b5d21d
修改每个容器的hosts文件
vim /etc/hosts
增加如下内容:
172.17.0.19 d6ab2641dcf3
172.17.0.21 a15ae831e68b
172.17.0.25 207343b5d21d
保存并退出。
对于每个节点:启动ssh服务:
service ssh start
对于每个节点,将其ssh公钥拷贝到其它节点的认证密钥中:
ssh-copy-id -i ~/.ssh/id_rsa.pub 其它节点的主机名或者IP
…
可选:对于每个节点,ssh其它节点验证是否能免密登录:
对于其中一个节点,修改hadoop配置文件。
修改vim core-site.xml
vim core-site.xml
将master修改为计划的master的主机名,如d6ab2641dcf3
修改slaves文件,将要作为slaves的主机名写入其中,如a15ae831e68b、207343b5d21d
vim slaves
修改为:
a15ae831e68b
207343b5d21d
修改yarn-site.xml
vim yarn-site.xml
将这些配置拷贝覆盖到其它节点
scp -r ~/hadoop-2.7.6/etc/hadoop/ root@a15ae831e68b:/root/hadoop-2.7.6/etc/
执行source /etc/profile使环境变量生效
source /etc/profile
在master上初始化namenode
hadoop namenode -format
切换到hadoop sbin目录
cd ~/hadoop-2.7.6/sbin
启动hadoop集群
./start-all.sh
在master上使用jps查看进程,应该有如下:
在slave上使用jps查看进程,应该有如下:
使用hdfs命令创建一个目录以及文件测试hdfs功能
hadoop fs -mkdir /chenjie
新建一个本地文本文件,并上传到hdfs中
vim test.txt
输入任意内容并保存退出
上传文件到hdfs
hadoop fs -put test.txt /chenjie
运行wordcount测试
切换到~/hadoop-2.7.6/share/hadoop/mapreduce
cd ~/hadoop-2.7.6/share/hadoop/mapreduce
运行wordcount
hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /chenjie/test.txt /out
hadoop fs -lsr /
hadoop fs -text /out/part-r-00000
master切换到spark的conf目录
cd ~/spark-2.0.2-bin-hadoop2.7/conf
修改slaves文件为:
a15ae831e68b
207343b5d21d
修改spark-defaults.conf文件
为
修改spark-env.sh
为
将这些配置发送到其它节点
scp -r ~/spark-2.0.2-bin-hadoop2.7/conf root@a15ae831e68b:/root/spark-2.0.2-bin-hadoop2.7/
scp -r ~/spark-2.0.2-bin-hadoop2.7/conf root@207343b5d21d:/root/spark-2.0.2-bin-hadoop2.7/
切换到master的sbin目录
cd ~/spark-2.0.2-bin-hadoop2.7/sbin
创建spark的history目录
hadoop fs -mkdir /historyserverforSpark
启动spark集群
./start-all.sh
Master上查看进程
jps
Slaves上查看进程
切换到master的bin目录
cd ~/spark-2.0.2-bin-hadoop2.7/bin
scala环境测试,进入spark-shell
./spark-shell
输入以下代码:
val test = sc.textFile("hdfs://d6ab2641dcf3:9000/chenjie/test.txt")
test.first()
Python环境测试
进入pyspark
./pyspark
输入如下代码:
test = sc.textFile("hdfs://d6ab2641dcf3:9000/chenjie/test.txt")
test.first()
容器 |
镜像 |
IP |
hadoop |
spark |
d6ab2641dcf3 |
ubuntu_bigdata |
172.17.0.19 |
master |
master |
a15ae831e68b |
ubuntu_bigdata |
172.17.0.21 |
slave |
slave |
207343b5d21d |
ubuntu_bigdata |
172.17.0.25 |
slave |
slave |
在gpu01结点进入某个容器:例如207343b5d21d
docker exec -it 207343b5d21d /bin/bash
切换到spark的bin目录下
cd ~/spark-2.0.2-bin-hadoop2.7/bin
使用./pyspark或者./spark-shell启动spark的shell环境,使用./spark-submit提交作业。