Hadoop在docker上的配置
标签: hadoop,docker
参看使用docker搭建hadoop集群
目录结构
安装docker
1 获取镜像
-
这里使用阿里云中的一个hadoop环境镜像
-
docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
下载完成后通过docker images
查看镜像
2 启动容器
docker run -i -t --name Master -h Master registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash
这里的-h和–name分别指定了主机名和容器名
3 配置无秘ssh环境
查看镜像的环境变量
echo ${PATH}
java环境已经在镜像中被配置完成
配置不需要密码的SSH访问
1,运行ssh
/etc/init.d/ssh start
2,生成秘钥保存秘钥
ssh-keygen -t rsa (yes,enter,enter...然后密码为开机密码)
cat id_rsa.pub > authorized_keys
cat authorzied_keys
3,在各个节点分别生成秘钥,实现免除秘钥访问需要每个节点都包含三个节点的keygen
使用指令
scp id_rsa.pub m1:/root/.ssh/id_rsa.pub.s1
scp id_rsa.pub m1:/root/.ssh/id_rsa.pub.s2
可将秘钥传至主节点其中m1为节点的ip地址,使用ip addr
命令可查
最后从master节点中讲authorized_keys 复制到slave1和2
scp authorized_keys s1:/root/.ssh/
配置成功后,ssh 节点ip
即可互相登录
编辑hosts文件,即可使用主机名登录
/etc/hosts
4,配置hadoop
hadoop-env.sh:修改有关java的环境
export JAVA_HOME=/opt/tools/jdk1.8.0_77
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/name</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<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:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
<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>
</configuration>
这些文件都位于节点的
/opt/tools/hadoop/etc/hadoop/
5,运行hadoop
在/opt/tools/hadoop/sbin下运行脚本
./start-all.sh
分别启动三个节点
使用jps查看相关进程是否启动
6,本地文件和docker容器的互传
首先需要取得容器的全称ID和名称
docker ps -a
docker inspect -f '{{.Id}}' [-name] [-shortid]
本机传容器
docker cp 本地文件路径 ID全称:容器路径
容器传本机
docker cp ID全称:容器路径 本地路径
7,hadoop运行jar包
1)将训练数据放入/input里面
hdfs dfs -put ~/train/* /input
2)跑程序
hadoop jar /opt/project_jars/oops.jar org.java.hadoop.CountryNumber -libjars /opt/project_jars/oops.jar /input /output/wxdt1