安装hadoop镜像
-
在docker中查找hadoop 镜像
docker search hadoop
-
我们选择star数量最多的镜像拉取
docker pull docker.io/sequenceiq/hadoop-docker
-
查看镜像
docker images
-
创建master节点
docker run --name hadoop1 -d -h master docker.io/sequenceiq/hadoop-docker
参数说明:
--name
:设置容器的名称-d
:在后台运行-h
:为容器设置主机名 -
以此方法创建slave1和slave2节点
docker run --name hadoop2 -d -h slave1 docker.io/sequenceiq/hadoop-docker
docker run --name hadoop3 -d -h slave2 docker.io/sequenceiq/hadoop-docker
-
查看容器
docker ps -s
-
进入容器查看jdk
docker exec -it hadoop1 bash
-
配置ssh生成秘钥,所有的节点都要配置
进入容器后,启动ssh
/etc/init.d/sshd start
-
生成秘钥
ssh-keygen -t rsa
-
进入/root/.ssh/目录
cd /root/.ssh/
-
复制公钥到authorized_keys中
cat id_rsa.pub > authorized_keys
-
查看authorized_keys
cat authorized_keys
-
其他节点(hadoop2、hadoop3)循环执行7~12步骤(过程省略,只附图)
-
将容器中的公钥向其余节点进行复制,三个节点的公钥应该都一样,且里面都有三个。
-
查看ip地址
使用ifconfig
命令查看每个容器ip地址
-
为每个容器设置地址
vi /etc/hosts
-
测试一下:(记得登录后要用
exit
退出才能回到根节点)
ssh master
ssh slave1
ssh slave2
配置hadoop(在master节点上)
-
进入容器查找 hadoop-env.sh存放位置
find / -name hadoop-env.sh
配置文件的目录一般都在/usr/local/hadoop-2.7.0/etc/hadoop
下面 -
进入
/usr/local/hadoop-2.7.0/etc/hadoop
目录下
cd /usr/local/hadoop-2.7.0/etc/hadoop
-
查看 hadoop-env.sh文件(已经帮我们配置好了)
vi hadoop-env.sh
- 查找core-site.xml
find / -name core-site.xml
- 进入
/usr/local/hadoop-2.7.0/etc/hadoop/
目录下
cd /usr/local/hadoop-2.7.0/etc/hadoop/
- 查看并编辑core-site.xml文件
vi core-site.xml
- 添加如下配置:
<property> <name>hadoop.tmp.dir</name> <value>/hadoop/tmp</value> </property>
- 查找hdfs-site.xml
find / -name hdfs-site.xml
- 进入
/usr/local/hadoop-2.7.0/etc/hadoop/
目录下
cd /usr/local/hadoop-2.7.0/etc/hadoop/
- 配置hdfs-site.xml
vi hdfs-site.xml
slave数量要大于等于备份的数量,否则会报错,当前是2个slave,所以满足条件。
- 查找mapred-site.xml
find / -name mapred-site.xml
- 进入
/usr/local/hadoop-2.7.0/etc/hadoop/
目录下
cd /usr/local/hadoop-2.7.0/etc/hadoop/
- 配置mapred-site.xml(已经帮我们配置好了)
vi mapred-site.xml
-
查找yarn-site.xml
find / -name yarn-site.xml
-
进入
/usr/local/hadoop-2.7.0/etc/hadoop/
目录下
cd /usr/local/hadoop-2.7.0/etc/hadoop/
-
配置yarn-site.xml
vi yarn-site.xml
-
增加以下配置
<property> <name>yarn.resourcemanager.address</name> <value>master:8032</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> <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:8089</value> </property>
将这些参数发送到其它节点(slave1/slave2)
scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop/
scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop/
运行hadoop
- 查找hadoop
find / -name hadoop
- 进入
/usr/local/hadoop-2.7.0/bin/
目录
cd /usr/local/hadoop-2.7.0/bin/
- 在master上格式化namenode
./hadoop namenode -format
如果出现以下问题:
请注意:
如果在日志信息中能看到这一行,则说明 namenode格式化成功:common Storage: Storage directory /data/hadoop repo/dfs/name has been successfully formatted
,大家可以把日志信息粘贴出来,Ctrl+F查找一下关键字,看是否有这句话,如果有,代表格式化namenode成功。 - 在master上启动集群
cd /usr/local/hadoop-2.7.0/sbin/
./start-all.sh
如果报错告诉端口被占用,那么就先停止,然后再启动:
./stop-all.sh
./start-all.sh
5.jps
查看进程,查看到,说明已启动