docker安装Hadoop集群(macOS)

本文章主要介绍在macos的docker搭建hadoop集群的简单记录,没有对安装docker,下载hadoop安装包等做过多的介绍。如果感性兴趣可自行查阅相关文章(比较基础)。创建docker网桥本文也没有介绍,最好先了解一下网桥相关知识。
不想从头制作镜像的朋友可以使用我做好的镜像(hadoop3.2.1):docker pull registry.cn-hangzhou.aliyuncs.com/san-namespaces/san-registry:hadoop-3.2.1

有一个注意点mac下docker容器互通问题直接翻到最下面(正常mac下宿主机无法ping通容器)

1.启动hadoop的三个容器
docker run -h hadoop-master --name hadoop-master -p 8088:8088 -p 9870:9870 -p 9868:9868 -itd --privileged=true --net mynetwork --ip 192.168.0.4 4eba2c1559c7 /usr/sbin/init
docker run -h hadoop-slave1 --name hadoop-slave1 -itd  --privileged=true --net mynetwork --ip 192.168.0.5 4eba2c1559c7 /usr/sbin/init
docker run -h hadoop-slave2 --name hadoop-slave2 -itd  --privileged=true --net mynetwork --ip 192.168.0.6 4eba2c1559c7 /usr/sbin/init

同步每台机器的 hosts 文件(/etc/hosts)(根据机器自行修改配置)

192.168.0.4     hadoop-master
192.168.0.5     hadoop-slave1
192.168.0.6     hadoop-slave2

由于/etc/hosts文件在容器启动时被重写,直接修改内容在容器重启后不能保留,为了让容器在重启之后获取集群hosts,使用了一种启动容器后重写hosts的方法。

需要在~/.bashrc中追加以下指令

:>/etc/hosts
cat >>/etc/hosts<<EOF
127.0.0.1  localhost
192.168.0.4   hadoop-master
192.168.0.5   hadoop-slave1
192.168.0.6   hadoop-slave2
EOF
2.配置机器间免密登陆
1.修改ssh配置

/etc/ssh/sshd_config文件中开启:

PubkeyAuthentication yes

2.重启ssh服务

systemctl restart sshd.service
3.创建ssh key
ssh-keygen -t rsa

连续回车,最终会在/root/.ssh目录下生成id_rsa和 id_rsa.pub文件。上述操作每台机器执行一次(1 and 2)

4.合并公钥

登陆hadoop-master,在/root/.ssh目录下执行以下命令,将a0的公钥追加到authorized_keys文件中(如果authorized_keys不存在会新建):

cat id_rsa.pub>> authorized_keys

将hadoop-slave1的公钥加到hadoop-master中。

ssh root@192.168.0.5 cat ~/.ssh/id_rsa.pub>> authorized_keys

输入hadoop-slave1的密码即可拷贝公钥到hadoop-master的authorized_keys中。同上拷贝hadoop-slave2的公钥到hadoop-master中。

此时vim /root/.ssh/authorized_keys 如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UulfWjrN-1615012289765)(/Users/sanhongbo/Library/Application Support/typora-user-images/image-20210127152549905.png)]

将hadoop-master中的公钥发送至两台从节点。完成免密登陆配置。

3.启动hadoop
1.修改配置文件

在$HADOOP_HOME/etc/hadoop下包括hdfs-site.xml、core-site.xml、yarn-site.xml、mapred-site.xml、master、workers、hadoop-evn.xml。配置文件修改可参照官方文档按需要配置,也可以参照网上基本配置(注意:hadoop版本不同,服务端口有变化,2.X与3.X相同页面服务,端口不同。master、workers文件名称亦有变化。自行查找配置)

1.格式化hdfs
hadoop namenode -format
2.启动hdfs

$HADOOP_HOME/sbin下有几个启动和停止的脚本如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xPPnKjH-1615012289769)(/Users/sanhongbo/Library/Application Support/typora-user-images/image-20210306134456325.png)]

执行(执行报错参照faq):

./start-dfs.sh

启动完成后可访问页面 ip:9870

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPH1CPzl-1615012289771)(/Users/sanhongbo/Library/Application Support/typora-user-images/image-20210306135839176.png)]

faq

结束hadoop配置后,对namenode初始化完成后。执行start-dfs.sh时报错:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2by9jP9q-1615012289773)(/Users/sanhongbo/Library/Application Support/typora-user-images/image-20210130213427205.png)]

[root@hadoop-master sbin]# ./start-dfs.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [hadoop-master]
Last login: Wed Jan 27 07:01:13 UTC 2021 from 192.168.0.6 on pts/7
hadoop-master: Warning: Permanently added 'hadoop-master,192.168.0.4' (ECDSA) to the list of known hosts.

由于本次启动使用root用户启动,需要在start-dfs.sh、stop-dfs.sh中增加

HDFS_DATANODE_USER=root  
HDFS_DATANODE_SECURE_USER=hdfs  
HDFS_NAMENODE_USER=root  
HDFS_SECONDARYNAMENODE_USER=root 

启动成功。

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

注意

mac下的宿主无法ping通docker容器原因在于docker在OSX的实现方式,是首先创建一个linux的虚拟机,在将docker放入到虚拟机中实现,而对于linux虚拟机,与OSX之间的通信,目前版本采用/var/run/docker.sock这种socket文件来通信,在OSX宿机中自然ping不通docker容器。

需安装Tunnelblick配置vpn,参照下面的帖子。

https://www.songma.com/news/txtlist_i62019v.html

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值