在学习大数据的情况下免不了自己搭建一个hadoop环境,但是使用虚拟机在自己的电脑上启动一个集群环境会很吃机器的资源,所以我们使用docker来进行搭建大数据的集群环境。同时docker搭建hadoop环境可以省去很多重复的步骤。
同时现在hadoop的版本比较多,虽然推荐使用HDP和CDH进行集群的搭建,但是在学习时间推荐使用Apache Hadoop进行搭建,可以更快的学习hadoop的工作原理。
环境准备
- docker-ce 环境
- ubuntu 16.04的镜像
- jdk1.7.0_80
- hadoop-2.7.3
所需的都为开源的,可以很方便的从网上找寻到相应的软件。
ubuntu 16.04 镜像环境的制作可以参考下篇博文:
可以直接再镜像制作的时候安装上相应的环境,比如java.
将制作好的系统打包为docker镜像
sudo tar -C /opt/new_os/ -c . | sudo docker import - ubuntu:v1
然后将镜像启动三个容器,可以直接写shell脚本一步到位
#!/bin/bash
paaswd="root"
echo ${passwd}|sudo -S docker run -itd -h master --privileged=True -v /data:/data -p 9000:9000 -p 9001:9001 -p 50070:50070 -p 8088:8088 --name="master-server" ubuntu:v1 bash
echo ${passwd}|sudo -S docker run -itd -h client1 --privileged=True -v /data:/data --name="client2-server" ubuntu:v1 bash
echo ${passwd}|sudo -S docker run -itd -h client2 --privileged=True -v /data:/data --name="client2-server" ubuntu:v1 bash
启动后的容器如下图所示:
2018-10-25 16-54-41 的屏幕截图.png安装JDK
将jdk1.7拷贝到/data目录下进行解压,下面就展现出docker搭建hadoop学习环境的好处。
在所有的容器里配值java环境变量,~/.bashrc或/etc/profile
export JAVA_HOME=/data/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
环境搭建
- 安装ntp,ssh服务
apt-get install ntp
apt-get install ssh
#启动ssh服务
service ssh start
- 设置所有容器的密码和允许远程访问
sudo passwd root
123
vim /etc/ssh/sshd_config
替换
PermitRootLogin without-password
为PermitRootLogin yes
重新启动ssh服务
service ssh restart
配值ssh无密访问
在master上运行
ssh-keygen
ssh-copy-id root@master
ssh-copy-id root@client1
ssh-copy-id root@client2
然后ssh root@client1进行测试是否可以无密访问
Hadoop配置
在/data下解压hadoop-2.7.3
进入hadoop-2.7.3/etc/hadoop/下进行修改配值文件
- vim hadoop-env.sh
在其中添加java环境
export JAVA_HOME=/data/jdk1.7.0_80
- vim core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-2.7.3/tmp</value>
<description>Abaseforothertemporarydirectories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
- vim hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/name</value>
<description>Path on the local filesystem where the NameNode stores the namespace andtransactionslogspersistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/data</value>
<description>Comma separatedlistofpathsonthelocalfilesystemofaDataNodewhere itshouldstoreitsblocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- vim mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
<description>HostofIPandportofJobTracker.</description>
</property>
</configuration>
- vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> </property>
<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>
- vim yarn-env.sh
export JAVA_HOME=/data/jdk1.7.0_80
- vim slaves
client1
client2
vim /etc/profile
export HADOOP_HOME=/data/hadoop-2.7.3
exportPATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
启动集群
bin/hdfsnamenode-format
sbin/start-all.sh
访问50070:
http://master:50070
出现页面,检查datanode是否完全启动成功
启动成功即可
否则:
hadoop-daemons.sh start datanode client1
网友评论