Hadoop(二)搭建Hadoop集群
在了解Hadoo基础之后,借助于docker快速实现虚拟化,搭建Hadoop集群,进一步了解Hadoop,实地测试,实地操作,更进一步的了解Hadoop。
首先需要了解Hadoop的各个模块概念已经功能,确定搭建怎么样集群。本文选择搭建一个如下的集群。
容器 |
NameNode |
DataNode |
ResourceManager |
NodeManager |
master2/172.16.0.2 |
yes |
no |
yes |
no |
slave3/172.16.0.3 |
no |
yes |
no |
yes |
slave4/172.16.0.4 |
no |
yes |
no |
yes |
一,准备
以Centos:7.5.1804为基础镜像,构建虚拟容器环境,用与搭建Hadoop集群。
安装Docker环境,Docker基础知识,Docker安装请参考《Docker实践(一)基础知识》
1.1,拉取centos:7.5.1804基础镜像
[root@ecs-7bc6-0001 centos]# docker pull centos:7.5.1804
7.5.1804: Pulling from library/centos
5ad559c5ae16: Pull complete
Digest: sha256:7a45e4a1efbaafc1d9aa89925b6fdb33288a96d35ea0581412316e2f0ad3720a
Status: Downloaded newer image for centos:7.5.1804
1.2,运行centos环境,并进入容器
[root@ecs-7bc6-0001 centos]# docker run -itd --name=centos centos:7.5.1804[root@ecs-7bc6-0001 centos]# docker exec -it {containerId} /bin/bash
1.3,安装必要软件
更新yum源
[root@2bf5e492f205 /]# yum clean[root@2bf5e492f205 /]# yum update
安装ssh-server,ssh-client
[root@2bf5e492f205 /]# yum install -y openssl openssh-server openssh-clients.x86_64
安装Java
[root@2bf5e492f205 /]# yum -y install java-1.8.0-openjdk.x86_64
[root@2bf5e492f205 /]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
[root@2bf5e492f205 /]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
退出容器,并提交修改到新的centos镜像版本
[root@ecs-7bc6-0001 centos]# docker commit -m"增加ssh java8" -a"weihao" 2bf5e492f205 centos:my
使用新镜像重新启动容器,并登入容器。
docker run -itd --name=centos --privileged centos:my /usr/sbin/init
注意增加--privileged,且entrypoint执行/usr/sbin/init,否则不能使用systemctl,ssh不能设置开机启动。
进入容器并设置ssh开机启动。
[root@ecs-7bc6-0001 centos]# docker exec -it {containerId} bash
[root@2bf5e492f205 /]#
[root@2bf5e492f205 /]# systemctl start sshd.service
[root@2bf5e492f205 /]# systemctl enable sshd.service
1.4,配置
1.4.1,下载hadoop安装包并解压
在容器/usr目录下下载hadoop,并解压安装包。
[root@2bf5e492f205 usr]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
[root@2bf5e492f205 usr]#
[root@2bf5e492f205 usr]# tar -zxvf hadoop-2.7.7.tar.gz
1.4.2,配置环境变量
配置Java以及Hadoop的环境变量,在/etc/profile中增加环境变量
export JAVA_HOME=/usr
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/usr/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量生效,并测试
[root@master2 /]# source /etc/profile
[root@master2 /]# echo $HADOOP_HOME
/usr/hadoop-2.7.7
[root@master2 /]# echo $PATH
/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/hadoop-2.7.7/bin:/usr/hadoop-2.7.7/sbin
1.5,创建docker网络
需要以指定host和ip启动容器,docker默认的网络不支持指定Ip指定host,所以需要创建docker网络。使用docker network命令。
[root@ecs-7bc6-0001 centos]# docker network create --subnet 172.16.0.0/24 --gateway 172.16.0.1 hadoop
ecb59f50deebd3a63bdb06be42b6eb40bfabf9c0cc87c0768f6c0288a30c0dc2
[root@ecs-7bc6-0001 centos]#
[root@ecs-7bc6-0001 centos]#
[root@ecs-7bc6-0001 centos]#
[root@ecs-7bc6-0001 centos]# docker network ls
NETWORK ID NAME DRIVER SCOPE
342bed4d76fe bridge bridge local
ecb59f50deeb hadoop bridge local
5d65376d94d3 host host local
72d49606a862 none null local
--subnet 172.16.0.0/24,指定子网
--gateway 172.16.0.1,指定网关
hadoop,指定网络名称
1.6,配置无密码登录的ssh
配置无密码登录的ssh,请参考《无密码登录SSH》,三个容器公用一个密钥对,密钥在root的.ssh目录下,在.ssh/authorized_keys中添加三个容器的访问公钥,注意最后一列用户名和主机。
[root@master2 /]# cat root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0zLk33Xn371ydrPyttHWTHTG0p0BTvTZv8t/PqmBS3MoXWV6cP/aBDKRTGkgi9yAZhnNUE8bFfMMMkK7W+Yy0pti8TPyItj7HgFpDUr7gylq3VwYggAyOZjHwgW+19H4iousfu5YcKrbzdOVUN7Y29OumnIfOg06wGVsyXtFOsml2cyWLsfTO5gr6p2PrMWo2rTnorXHRbA5ZVPPnDgfKnbyD20WroJ7Yf70Yk1G2S4ZEZcWAjteuQCKtDVBYsi3KaG3WHxZ0jDQryqhlPT1KstYlA8trkyK7sJWHBGwNMOBdshiPud81mfYXuU+Rv8BYr3ChdBvmq29/gOD14KEH root@master2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0zLk33Xn371ydrPyttHWTHTG0p0BTvTZv8t/PqmBS3MoXWV6cP/aBDKRTGkgi9yAZhnNUE8bFfMMMkK7W+Yy0pti8TPyItj7HgFpDUr7gylq3VwYggAyOZjHwgW+19H4iousfu5YcKrbzdOVUN7Y29OumnIfOg06wGVsyXtFOsml2cyWLsfTO5gr6p2PrMWo2rTnorXHRbA5ZVPPnDgfKnbyD20WroJ7Yf70Yk1G2S4ZEZcWAjteuQCKtDVBYsi3KaG3WHxZ0jDQryqhlPT1KstYlA8trkyK7sJWHBGwNMOBdshiPud81mfYXuU+Rv8BYr3ChdBvmq29/gOD14KEH root@slave3
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0zLk33Xn371ydrPyttHWTHTG0p0BTvTZv8t/PqmBS3MoXWV6cP/aBDKRTGkgi9yAZhnNUE8bFfMMMkK7W+Yy0pti8TPyItj7HgFpDUr7gylq3VwYggAyOZjHwgW+19H4iousfu5YcKrbzdOVUN7Y29OumnIfOg06wGVsyXtFOsml2cyWLsfTO5gr6p2PrMWo2rTnorXHRbA5ZVPPnDgfKnbyD20WroJ7Yf70Yk1G2S4ZEZcWAjteuQCKtDVBYsi3KaG3WHxZ0jDQryqhlPT1KstYlA8trkyK7sJWHBGwNMOBdshiPud81mfYXuU+Rv8BYr3ChdBvmq29/gOD14KEH root@slave4
1.7,配置hosts
在/etc/hosts中添加三个容器的ip和hostname对应关系。添加以下三行。
172.16.0.2 master2
172.16.0.3 slave3
172.16.0.4 slave4
退出容器,提交修改到新的centos镜像,准备工作完成
二,开始搭建
2.1,分别启动三个容器,指定IP,HOST等选项。
启动master2
docker run -itd --name=hadoop_master2 --net=hadoop --hostname=master2 --ip=172.16.0.2 --privileged -p 9000:9000 -p 8088:8088 -p 9001:9001 -v /home/work/docker/hadoop:/data centos:my2 /usr/sbin/init
-i,-t,-d,打开容器的标准输入,分配伪终端,且后台运行
--name,指定容器名称
--net,指定容器网络
--hostname,指定容器主机名称
--ip,指定容器ip
--privileged,容器中继承当前权限
-p 9000:9000 -p 8088:8088 -p 9001:9001,开放9000端口并映射到宿主即的9000端口,开放8088端口并映射到宿主即的8088端口,开放9001端口并映射到宿主即的9001端口
-v /home/work/docker/hadoop:/data,宿主机的/home/work/docker/hadoop映射到容器的/data目录
centos:my2,镜像名称和标签
/usr/sbin/init,entrypoint,支持systemctl
启动slave3,slave4
docker run -itd --name=hadoop_slave3 --net=hadoop --hostname=slave3 --ip=172.16.0.3 --privileged -v /home/work/docker/hadoop:/data centos:my2 /usr/sbin/init
docker run -itd --name=hadoop_slave4 --net=hadoop --hostname=slave4 --ip=172.16.0.4 --privileged -v /home/work/docker/hadoop:/data centos:my2 /usr/sbin/init
2.2,修改hadoop配置
2.2.1,修改core-site.xml,创建hadoop.tmp.dir对应目录,修改配置
<configuration><property><name>fs.defaultFS</name><value>hdfs://master2:9000</value></property><property><name>io.file.buffer.size</name><value>131072</value></property><property><name>hadoop.tmp.dir</name><value>file:/data/temp</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
</configuration>
2.2.2,修改hdfs-site.xml,在<configuration>标签下添加,其中配置中的目录/data/dfs/data和/data/dfs/name需要事先创建。也可以使用其他自定义目录,需要保证配置中的目录存在。
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>master2:9001</value></property><property><name>dfs.namenode.name.dir</name><value>file:/data/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/data/dfs/data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.web.ugi</name><value>supergroup</value></property>
</configuration>
2.2.3,将mapred-site.xml.template复制一份为mapred-site.xml并修改
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master2:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master2:19888</value></property>
</configuration>
2.2.4,修改yarn-site.xml
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address</name><value>master2:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>master2:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>master2:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>master2:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>master2:8088</value></property>
</configuration>
2.3,启动hadoop
2.3.1,启动hdfs
在master2上启动namenode
$ hadoop-daemons.sh --script "$HADOOP_HOME/bin/hdfs" start namenode
在slave3,slave4上启动datanode
$ hadoop-daemons.sh --script "$HADOOP_HOME/bin/hdfs" start namenode
2.3.2,启动yarn
在master2上启动ResourceManager
hadoop-daemons.sh --script "$HADOOP_HOME/bin/yarn" start resourcemanager
在slave3,slave4上启动NodeManager
hadoop-daemons.sh --script "$HADOOP_HOME/bin/yarn" start nodemanager
三,测试
3.1,查看进程
通常使用jps查看JVM进程,但是简装的openjdk没有jps命令,使用ps -aux查看可以看到resourceManager和namenode进程
[root@master2 hadoop]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 311 0.1 5.6 2778488 454748 ? Sl Jul24 3:03 /usr/bin/java -Dproc_namenode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/hadoop-2.7.7/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/hadoop-2.7.
root 455 0.3 5.8 2935432 468584 ? Sl Jul24 10:33 /usr/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/usr/hadoop-2.7.7/logs -Dyarn.log.dir=/usr/hadoop-2.7.7/logs -Dhadoop.log.file=yarn.log -Dyarn.log.file=yarn.lo
root 967 0.0 0.0 11820 1684 pts/1 Ss+ Jul24 0:00 bash
3.2,打开namenode网页端,端口9001
3.3,打开resourcemanager网页端,端口8088
hadoop简单集群搭建完成,下一步开始测试hdfs和mapreduce。
(完)(^_^)
Hadoop(二)搭建Hadoop集群相关推荐
- Hadoop环境搭建 Zookeeper集群部署
前提:关闭防火墙 (1)查看防火墙是否关闭 systemctl status firewalld (2)关闭防火墙 systemctl stop firewalld (3)设置防火墙开机不启动 sys ...
- spring cloud多模块项目框架搭建-Redis-Cluster集群搭建及系统集成
第九章 Redis-Cluster集群搭建及系统集成 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的demo而已,提供系统 ...
- 手把手教你搭建Hadoop生态系统伪分布式集群
Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了. 手把手教你搭建Hadoop生态 ...
- Hadoop HA 高可用集群搭建
Hadoop HA 高可用集群搭建 一.首先配置集群信息 1 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 1 tar -zxvf zookeeper- ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
一.服务器环境 主机名 IP 用户名 密码 安装目录 master 192.168.142.124 root xxx /usr/hadoop-2.6.5/ slave1 192.168.142.125 ...
- Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门
目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...
- 【Hadoop生态圈】1.Hadoop入门教程及集群环境搭建
文章目录 1.简介 2.环境准备 3.安装hadoop 3.修改Hadoop配置文件 3.1.hadoop-env.sh配置 3.2.core-site.xml配置 3.3.hdfs-site.xml ...
- hadoop 2.4.1 集群安装一
配置主机名参考 Hadoop 1.2.1 集群安装一 配置JDK环境参考Hadoop1.2.1集群安装二 配置hadoop A:下载解压hadoop http://mirrors.cnnic.cn/a ...
- Hadoop与Spark的集群复制
Hadoop与Spark的集群复制 前面完成了Master主机上Hadoop与Spark的搭建, 现在我们将该环境及部分配置文件从Master分发到各个Worker节点上(以笔者环境为例). 在集群环 ...
最新文章
- mysql插入数据die_吴裕雄 10-MySQL插入数据
- mysql union order_MySQL中union和order by同时使用的实现方法
- 大学阶段总结——大一
- python ttf svg path_SVG的path的使用
- VC2010“添加资源-引入JPG图片”会改变图片大小
- 震惊!!!这才是代码!!
- 使用base64编码把背景添加到CSS文件中
- 在不动用sp_configure的情况下,如何 =》去掉列的自增长,并保留原数据
- C#中的深度学习:使用OpenCV进行硬币检测
- linux cat read line,cat file | while read line的问题
- python安卓自动化原理_appium---appium自动化原理
- 如何使用 DNSMAQ 搭建 DNS 服务器?
- 我的开源项目:FLV封装格式分析器
- 红米3s进不了recovery_红米手机3S/3X刷recovery教程及第三方recovery下载
- ROS Bridge 笔记(02)— carla_ros_bridge 功能包(准备 ROS环境、运行 ROS Bridge、配置 CARLA 参数、同步模式下使用 ROS Bridge、主车辆控制)
- 用计算机刻录光盘,图文详解怎么用电脑刻录光盘
- 匀速运动,太空版愤怒的小鸟
- Nokia n97详解
- 周星馳 電影經典對白
- 【云享·人物】华为云AI高级专家白小龙:AI如何释放应用生产力,向AI工程化前行?
热门文章
- django集成原有数据库
- [iBoard 电子学堂][第二卷 C程序设计语言 ]第二篇 数据类型与运算符
- 今天的练习是敏捷结果30天的最后一天
- ASP.NET中XML数据的处理
- java有道翻译_Java 调用 有道翻译API
- java 工程文件改名后显示绿色加号_Gradle学习记录018 构建java JVM工程 part1
- 设计师交流社区|积累开拓眼界必备网站
- 俯视排版类型海报|没思路?试试可临摹PSD分层模板设计吧!
- 美妆海报不会做? PSD分层模板轻松掌握大咖思路!
- input自适应_一种Dynamic ReLU:自适应参数化ReLU激活函数(调参记录13)