900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > windows平台使用Docker搭建分布式hadoop集群

windows平台使用Docker搭建分布式hadoop集群

时间:2019-04-19 08:32:00

相关推荐

windows平台使用Docker搭建分布式hadoop集群

先修篇

下载Docker可参考该博客的Docker安装

安装Docker可能遇到的一些问题可参考该博客的Docker安装问题

操作环境

windows : 10Docker : 4.7.0将要拉取的镜像 : centos 7.6.1810

1. 安装centos 7.6镜像

1.1 搜索centos 7.6镜像

docker search centos7

1.2 拉取镜像

docker pull centos:7.6.1810

1.3 验证镜像安装成功

docker images

1.4 创建桥接网络(Docker默认使用桥接,此处亦使用桥接)

1.4.1 将网络名称命名为hadoop

docker network create -d bridge hadoop

1.4.2 查看网络hadoop

docker network inspect hadoop

1.5 运行镜像成容器

# 将本地目录A挂载至镜像centos:7.6.1810,并以特权模式在后台启动容器(命名为centos7)docker run -v E:\COURSE\spark:/home -itd --privileged --name centos7 centos:7.6.1810 /usr/sbin/init

docker run参数

-v windows本地目录挂载至容器centos7的目录下-itd 后台启动–privileged 特权模式–name 对容器起名

# 连接当前运行容器,获取bashdocker exec -it centos7 /bin/bash

2. 为搭建hadoop做准备

2.1 配置centos镜像

阿里centos 镜像源

2.1.1 备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.1.2 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

curl -o /etc/yum.repos.d/CentOS-Base.repo /repo/Centos-7.repo

2.1.3 生成缓存

yum makecache

2.2 为root用户设置密码

yum -y install passwdpasswd root

2.3 安装工具

可不执行该语句

yum -y install vim passwd openssh-clients openssh-server net-tools

2.3.1 安装vim

yum install -y vim

2.2.2 安装open-ssh

yum install -y openssh-server openssh-clients

ssh-keygen命令常用选项:

-t TYPE:指定密钥加密类型-P PASSWORD:指定私钥加密的密码,建议为空-f FILENAME:指定密钥保存位置 配置ssh免密登录

ssh-keygen -t rsa -P ""

将公钥追加到authorized_keys 文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

编辑文件/etc/ssh/sshd_config

vim /etc/ssh/sshd_config

将PermitRootLogin yes、PubkeyAuthentication yes的注释去掉

4. 设置 SSH 服务为自启动

systemctl enable sshd.service

启动 SSH 服务

systemctl start sshd.service

免密登录自己(验证ssh是否配置成功)

ssh 127.0.0.1

2.2.3 安装JAVA

方式一 使用yum源安装

yum search java| grep jdkyum install -y java-1.8.0-openjdk*

2.2.3.1. 寻找JAVA安装位置

第二条和第三条命令中具体ls 哪个目录, 视上一步输出结果而定

which javals -lr /usr/bin/javals -lr /etc/alternatives/java

2.2.3.2 由①寻得java安装目录为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java

2.2.3.3 配置有关java环境变量

vim /etc/profile

在末尾添加如下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

2.2.3.4 验证

source /etc/profileecho $JAVA_HOME

方式二 压缩包式安装

第一步 : Oracle JDK官网下载至(之前启动容器时挂载的目录A)

tar -zxvf /home/jdk-8u331-linux-x64.tar.gz -C /usr/local/mv /usr/local/jdk-8u331-linux-x64 /usr/local/java

第二步 : 配置有关java环境变量

vim /etc/profile

在末尾添加如下内容:

export JAVA_HOME=/usr/local/javaexport JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

第三步 : 验证

source /etc/profileecho $JAVA_HOME

2.2.4 将hadoop3.2.2解压至/usr/local目录下

此前启动容器时,将目录A(E:\COURSE\spark文件夹)挂载至容器的/home下

hadoop-3.2.3.tar.gz清华镜像站

tar -zxvf /home/hadoop-3.2.2.tar.gz -C /usr/local/mv /usr/local/hadoop-3.2.2 /usr/local/hadoop

3. 搭建hadoop集群

3.1 修改文件

3.1.1 /etc/profile

vim /etc/profile

在末尾添加如下内容:

export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_CONF_DIR=$HADOOP_HOME export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATHexport HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoopexport HDFS_DATANODE_USER=rootexport HDFS_DATANODE_SECURE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport HDFS_NAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root

使文件/etc/profile生效:

source /etc/profile

3.1.2 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

在末尾添加如下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root

3.1.3 $HADOOP_HOME/etc/hadoop/core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml

将原文件的<configuration></configuration>替换为如下内容:

<configuration><property><name>fs.default.name</name><value>hdfs://node01:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property><property><name>io.file.buffer.size</name><value>131702</value></property></configuration>

3.1.4 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

将原文件的<configuration></configuration>替换为如下内容:

<configuration><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/hdfs_name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/hdfs_data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.secondary.http-address</name><value>node01:9001</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property></configuration>

3.1.5 $HADOOP_HOME/etc/hadoop/mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

将原文件的<configuration></configuration>替换为如下内容:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>node01:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node01:19888</value></property><property><name>mapreduce.application.classpath</name><value>/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*</value></property></configuration>

3.1.6 $HADOOP_HOME/etc/hadoop/yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

将原文件的<configuration></configuration>替换为如下内容:

<configuration><property><name>yarn.resourcemanager.hostname</name><value>node01</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address</name><value>node01:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>node01:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>node01:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>node01:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>node01:8088</value></property></configuration>

3.1.7 $HADOOP_HOME/etc/hadoop/workers

vim $HADOOP_HOME/etc/hadoop/workers

将原文件的替换为如下内容:

node02node03

3.2 从容器中保存镜像

# 当前容器 可使用命令 docker ps 查看镜像IDdocker commit -m “hadoop” -a “hadoop“ 当前容器 目标镜像

本人此处命令为

docker commit -m “Deploy Hadoop based on centos” -a “CMCST“ centos7 hadoop_centos

docker commit :从容器创建一个新的镜像。

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

3.3 启动hadoop

3.3.1 运行Master节点: node01

docker run -itd --privileged --network hadoop -h "node01" --name "node01" -p 9870:9870 -p 8088:8088 -p 50070:50070 -p 9001:9001 -p 8030:8030 -p 8031:8031 -p 8032:8032 hadoop_centos /usr/sbin/init

3.3.2 运行Worker节点: node02

docker run -itd --privileged --network hadoop -h "node02" --name "node02" hadoop_centos /usr/sbin/init

3.3.3 运行Worker节点: node03

docker run -itd --privileged --network hadoop -h "node03" --name "node03" hadoop_centos /usr/sbin/init

3.3.4 修改文件/etc/hosts

获取node01、node02、node03的terminal

分别打开三个cmd窗口,分别执行

docker exec -it node01 /bin/bashdocker exec -it node02 /bin/bashdocker exec -it node03 /bin/bash

获取node01、node02、node03的IP地址

docker network inspect 网络名称

docker network inspect hadoop

在node01、node02、node03中修改文件/etc/hosts

vim /etc/hosts

在文件首部添加如下内容

172.18.0.2 node01172.18.0.3 node02172.18.0.4 node03

3.3.4 格式化[node1下]

/usr/local/hadoop/bin/hadoop namenode -format

3.3.5 启动hadoop集群[node1下]

/usr/local/hadoop/sbin/start.all.sh

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。