赞
踩
Hadoop是学大数据必须用到的框架,而hadoop集群搭建是首要步骤。一般的集群搭建都要用到虚拟机,而虚拟机软件下载安装破解本就是一件费时费力的事,而且一个虚拟机软件同时运行多个linux虚拟机可能会让电脑很卡,因此这里尝试使用docker容器构建hadoop集群,模拟真实生产场景中的多个节点。
首先hadoop框架需要实现安装jdk,这里直接使用java:8镜像运行容器,可以直接拉取然后运行容器:
- docker pull java:8
- docker run -it --name java8 java:8 bash
容器内已自带jdk,可以使用java --version查看版本信息,也可以查看环境变量:
echo $JAVA_HOME
再安装vim和ssh,后面会用到:
- apt-get update
- apt-get install vim
- apt-get install ssh
然后下载hadoop的安装包:清华大学Hadoop镜像源,移到容器内的jdk同级目录:
docker cp 宿主机hadoop安装包的绝对路径 容器id:/usr/lib/
hadoop安装包很大,可能要很久,然后解压:
tar –xvf 文件名.tar
这里是.tar文件,用的参数是-xvf,如果是.tar.gz文件,则使用-zxvf。解压后的文件夹名字一般带有版本号,建议改名去掉版本号:
mv hadoop-3.3.2 hadoop
然后添加环境变量,先进入/etc/profile.d/目录,然后新建编辑my_env.sh:
- cd /etc/profile.d/
- vim my_env.sh
- export HADOOP_HOME=/usr/lib/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin
- export PATH=$PATH:$HADOOP_HOME/sbin
然后依次按ESC,:wq!退出,使环境变量生效:
source my_env.sh
上述方法添加的环境变量是一次性的,退出容器再进入或者重启重启好像会使环境变量失效,后面可以写一个Dockerfile(下节内容中尝试实现),使环境变量永久生效。
接下来通过单词统计案例来验证hadoop安装是否正确,进入hadoop目录:
cd /usr/lib/hadoop
新建输入文件夹,并进入:
- mkdir wcinput
- cd wcinput
新建文件并编辑:
vi word.txt
- ss ss
- cls cls
- bz
- bobo
- yangge
然后保存退出,回到hadoop目录,hadoop目录大致如下图所示:
执行如下命令统计单词数,输出到wcoutput文件夹(注意这里的output一定要实现不存在,如果存在,会抛异常):
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar wordcount wcinput/ wcoutput
执行完毕后进入wcoutput :
查看part-r-0000:
统计结果正确,证明安装的hadoop应该没问题。
然后配置多个容器间的ssh免密登录,首先在运行容器的时候可以指定主机名:
docker run -it --name 容器名 --hostname 主机名 镜像名 bash
然后在/etc/hosts文件中配置其他主机名和ip的映射关系,比如在hadoop1主机中配置hadoop2的主机名和ip,下图是添加后的文件内容(只添加了最后一行):
然后给各主机配置密码:passwd命令,再在各个主机上开启ssh服务:
/etc/init.d/ssh start
如果不开启,后面会报连不上ssh: connect to 主机名/ip port 22: Connection refused。还需要修改配置文件/etc/ssh/sshd_config,将其中的PermitRootLogin 后面改为yes,默认的是withou-password也不行,一定要为yes,否则报错:Permission denied, please try again. 然后可以正常连接其他主机,但是需要密码,此时需要配置免密登录:
ssh-keygen -t rsa
按下三个回车后,再输入:
ssh-copy-id 主机名
输入要连接的主机的密码即可实现免密登录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。