基于docker搭建hadoop集群(一)

試著忘記壹切 提交于 2019-12-26 18:37:33

期末老师让做课设,最后选择了这个课题

第一步

1.在centos上安装docker
1.1 $ sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
                  
1.2 $ sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
  
1.3 $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

1.4 $ sudo yum install docker-ce docker-ce-cli containerd.io

1.5 $ yum list docker-ce --showduplicates | sort -r

1.6 $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

1.7 $ sudo systemctl start docker
2.用docker拉取一个镜像

这里我们选用ubuntu:14.04作为我们的容器镜像

docker pull ubuntu:14.04

进入ubuntu容器

docker run -it ubuntu:14.04

apt-get update 更新一下
apt-get remove vim-commen 先卸载自带的vim-commen
apt-get install vim 下载vim

3.将下载好的 jdk1.8、hadoop3.7.7 压缩包从本机传入容器里

另外打开一个命令窗口
docker cp 文件 容器ID:放置文件的目录
例:docker cp jdk1.8.0.181 a1b2c3d4:/room

4.安装jdk

tar -zxvf jdk… -C /usr/local 将jdk解压到/usr/local下
vi /etc/profile 将jdk加入环境变量

export JAVA_HOME=/usr/local/jdk1.8.0_181
CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

使用#source /etc/profile命令执行脚本
使用# java -version 检查java环境

5.安装hadoop集群

mkidr /var/hadoop 建立hadoop工作目录/var/hadoop
tar -zxvf hadoop-3.7.7… -C /usr/local 将hadoop解压到/usr/local
编辑/usr/local/hadoop2.7/etc/hadoop下的配置文件

i.hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8.0_181
  
ii.yarn-env.sh
# some Java parameters
export JAVA_HOME=/usr/local/jdk1.8.0_181

iii.mapred-env.sh
# limitations under the Licence.
export JAVA_HOME=/usr/local/jdk1.8.0_181

iv.core-site.xml
<configuration>
 <property><!--hadoop临时文件的存放目录-->
  <name>hadoop.tmp.dir</name>
  <value>/var/hadoop/tmp</value>
 </property>
 <property><!--NameNode 的URI默认端口为8020-->
  <name>fs.default.name</name>
  <value>hdfs://master</value> 
 </property>
</configuration>

v.hdfs-site.xml
<configuration>
 <property><!--namenode持久存储名字空间及事务日志的本地文件系统路径--> 
  <name>dfs.name.dir</name>
  <value>/var/hadoop/dfs/name</value>
 </property>
 <property><!--DataNode存放块数据的本地文件系统路径--> 
  <name>dfs.data.dir</name>
  <value>/var/hadoop/dfs/data</value>
 </property>
 <property><!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
  <name>dfs.replication</name>
  <value>2</value>
 </property>
</configuration>

vi.yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property><!--NodeManager上运行的附属服务,用于运行mapreduce--> 
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property> <!--ResourceManager 对客户端暴露的地址--> 
  <name>yarn.resourcemanager.address</name>
  <value>master:8032</value>
</property>
<property><!--ResourceManager 对ApplicationMaster暴露的地址-->
<name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property><!--ResourceManager 对NodeManager暴露的地址--> 
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property><!--ResourceManager 对管理员暴露的地址--> 
<name>yarn.resourcemanager.admin.address</name>
 <value>master:8033</value>
</property>
<property><!--ResourceManager 对外web暴露的地址,可在浏览器查看-->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>

vii.mapred-site.xml  (拷贝 mapred-site.xml.template)
<configuration>
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
</configuration>

viii.slaves
  Slave1
  Slave2 

6.安装ssh

apt-get install ssh
修改/etc/ssh/sshd_config文件
修改PermitRootLogin without-password 为yes
在这里插入图片描述

7.退出容器,将配置好的容器打包成镜像
docker ps -a 查看一下容器ID
docker commit ID ubuntu:hadoop
docker run -it -h master ubuntu:hadoop 以master为hostname开启一个容器

同理开启slave1、slave2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!