前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RedHat 6.8 搭建 Hadoop 集群

RedHat 6.8 搭建 Hadoop 集群

作者头像
星哥玩云
发布2022-08-08 16:00:04
6320
发布2022-08-08 16:00:04
举报
文章被收录于专栏:开源部署开源部署

Hadoop基本简介

  • 是一个由Apache基金会所开发的分布式系统基础架构。
  • 广义上来说,是一个Hadoop生态圈(由一堆框架、软件组成)
版本介绍
  • 分为社区版和商业版
  • 1.x,2.x,-是并行发展的
    • 1.x :
      • 由一个分布式文件系统HDFS
      • 一个离线计算机框架MapReduce
    • 2.x:
      • 支持NameNode的HDFS
      • 资源管理系统YARN
      • 运行在YARN上的MapReduce
      • 比1的功能更强大,有更好的扩展性、性能、并支持多种计算框架
    • 3.x
      • 比2有一系列功能加强,但还在测试
集群介绍
  • 包含两个集群,HDFS集群和YARN集群:
    • 都是分布式,可以布置在多台机器上。
    • 两者逻辑上分离,但物理常在一起:但是即使装在一台机器上,逻辑上也是分离的,就是说两个的处理完全独立,1个执行不了不影响另一个。
优势
  • 扩容能力:分布式系统方便的扩充
  • 成本低:可以使用多台普通廉价的机器
  • 高效率:通过并发数据,结点直接动态并行移动数据,速度块。
  • 可靠性:自动同步备份数据
HDFS集群:
  • 负责数据的存储。
  • 集群中的角色:
    • NameNode:命名结点
    • DataNode:数据结点
    • SecondaryNameNode:秘书结点
YARN集群
  • 负责数据运算的硬件资源调度,比如内存
  • 集群中的角色
    • Resource Manager
    • Node Manager
MapReduce
  • 其实是一个分布式运算编程框架(类似一个接口和一系列父类)
  • 注意并不是一个集群
部署方式
  • Standalone mode(独立模式):单机模式,在1个机器上运行一个Java进程,主要用于调试。
  • Pseudo-Distributed mode(伪分布模式):1个机器上运行HDFS和YARN,但是分别开启Java进程
  • Cluster mode (集群模式):实际生产使用的模式,在N台主机组成一个Hadoop集群

搭建Hadoop

0.部署计划

  本文使用的版本是 

  • Red Hat 6.8 -本来想用CentOS7搭建的,但是工作需要还是换成这个了,不用红帽子用Centos 6系列的应该也可以
  • JDK 1.8
  • Hadoop 2.7.7
  •   计划部署2台虚拟机,分别命名为node-1和node-2,4G内存和40G的硬盘

主机名字

内存

硬盘

启用结点

node-1

4

40

hdfs:NameNode, DataNode;yarn:NodeManager, ResoureceManager,

node-2

4

40

hdfs:SecondaryNameNode,DataNode; yarn: NodeManager

1.环境部署

node-1&2环境
  • 以下内容两台机器都要配置
  1. 部署虚拟机(使用VMware傻瓜式操作,不再赘述)
  2. 挂载本地yum源(或者使用网络都行)
  3. 同步机组时间 #yum安装ntpdate yum install ntpdate #网络同步时间 ntpdate cn.pool.ntp.org
  4. 配置主机名称 vim /etc/sysconfig/network ​ #修改为: NETWORKING=yes HOSTNAME=node-1 
  5. 配置IP、主机名映射 vim /etc/hosts ​ #直接添加 192.168.98.129 node-1 192.168.98.130 node-2
  6. 配置ssh免密登录 ssh-keygen -t rsa #再按四次回车 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 20:15:74:e0:d2:48:1d:0d:e4:42:2a:14:28:1e:b7:75 root@node-1 The key's randomart image is: +--[ RSA 2048]----+ |.o. o+O*. | |+. = B.E. | |+ + B * | | o . + . | | S | | | | | | | | | +-----------------+ ​ #使用ssh-copy-id命令将公钥考培到要免密登录的目标机器上 ssh-copy-id node-1 ssh-copy-id node-2
  7. 关闭防火墙 #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables off 如下图状态则说明防火墙已经关闭、防火墙开机不会自动启动
  1. 安装JDK
    • 使用rpm格式文件安装
    • 复制到/usr/java文件夹(没有则先创建文件夹)
    • #授予权限 chmod 700 jdk-8u65-linux-x64.rpm #安装 rpm -ivh jdk-8u65-linux-x64.rpm
    • 安装完成

9. 配置环境变量

代码语言:javascript
复制
#打开全局环境变量设置
vim  /etc/profile
​
#在文档最下方添加配置
JAVA_HOME=/usr/java/jdk1.8.0_65
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
​
#生效配置
source /etc/profile
​
#测试配置
java -version

配置成功:

node-1配置Hadoop

  • 以下操作只要在node1上操作
  1. 安装Hadoop
    • 使用tar.gz格式安装
    • 复制到/usr/hop,没路径自行创建

    #授予权限 chmod 700 hadoop-2.7.7.tar.gz ​ #解压到当前路径 [root@node-1 hop]# tar zxvf hadoop-2.7.7.tar.gz ​

  2. 配置Hadoop
    1. 配置目录:/usr/hop/hadoop-2.7.7/etc/hadoop
      • 所有配置文件都在这里
      • 我们一共需要配置:
        • hadoop-env.sh
        • core-site.xml
        • hdfs-site.xml
        • mapred-site.xml
        • yarn-site.xml
        • slaves
    2. vim hadoop-env.sh #在文件中找到JAVA_HOME,修改配置 export JAVA_HOME=/usr/java/jdk1.8.0_65
    3. vim core-site.xml
      • hadoop.tmp.dir是导出目录,注意要手动创建/usr/hop/hadoop-2.7.7/data/
      • 最好创建在hadoop的安装目录下

      <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node-1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hop/hadoop-2.7.7/data/hopdata</value> </property> </configuration>

      • 注意不一样,别写错
    4. vim hdfs-site.xml
      • dfs.replication是指默认备份的数量

      <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>node-2:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> ​

    5.  mapred-site.xml
      • 默认只有mapred-site.xml.template ,因此要改成mapred-site.xml
代码语言:javascript
复制
mv mapred-site.xml.template
vim mapred-site.xml
代码语言:javascript
复制
代码语言:javascript
复制
<!--指定mapreduce运行时框架,这里指定在yarn上,默认是local-->
代码语言:javascript
复制
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
​

6. vim yarn-site.xml

代码语言:javascript
复制
代码语言:javascript
复制
<configuration>
​
<!-- Site specific YARN configuration properties -->
  <property>
    <!--指定YARN的主机(ResourceManager)的地址-->
    <name>yarn.resourcemanager.hostname</name>
    <value>node-1</value>
  </property>
  <property>
    <!--nodeManager上运行的附属服务,需要配置成maperduce_shuffle,才可用MapReduce程序-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
​

7. vim slaves

  • 告诉hadoop有多少台机器

代码语言:javascript
复制
node-1
node-2
代码语言:javascript
复制

8. 配置Hadoop环境变量,和java的一样,配置以后整体如下

代码语言:javascript
复制
JAVA_HOME=/usr/java/jdk1.8.0_65
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
HADOOP_HOME=/usr/hop/hadoop-2.7.7
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH JAVA_HOME CLASSPATH HADOOP_HOME
​

  生效环境变量

代码语言:javascript
复制
source /etc/profile

测试环境变量配置是否成功

代码语言:javascript
复制
hadoop version

9. 把Hadoop发送到其他机器上

代码语言:javascript
复制
scp -r /usr/hop/hadoop-2.7.7/ root@node-2:/usr/hop

注意,如果导出目录没设置在Hadoop安装包里,其他机器上也要手动创建导出目录(最好把导出目录直接设置在hadoop文件夹里面。。)

10. 把环境变量发送到其他机器上

代码语言:javascript
复制
scp -r /etc/profile root@node-2:/etc/

生效其他机器的环境变量

代码语言:javascript
复制
source /etc/profile

Hadoop集群启动

1.hdfs格式化
  • 只有首次启动需要
  • 格式化本质是进行文件系统初始化操作,创建一些自己所需要的文件
  • 格式化之后,集群启动成功,后续不要再格式化
  • 格式化的操作在hdfs集群的主角色(namenode)上操作
代码语言:javascript
复制
#以下两条命令都可以,只要执行1条!
#在node-1中执行
hdfs namenode –format 
hadoop namenode –format

2.启动hdfs集群

  • 定位到/usr/hop/hadoop-2.7.7/sbin
  • 目录中有一堆执行文件,其中start-dfs.sh就是hdfs集群的启动文件
  • start-all.sh和stop-all.sh是Deprecated的,不建议使用
  • 执行start-dfs.sh
  • 发现报错(如果没报错就跳过)

 一些解决方案

配置完hadoop启动的时候出现如下警告信息:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

  1. 如何验证64bit还是32bit?

进入hadoop安装目录,用ldd命令查看依赖库

ldd libhadoop.so.1.0.0 会输出如下信息:

代码语言:javascript
复制
./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
        linux-vdso.so.1 =>  (0x00007fff369ff000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3caa7ea000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3caa455000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3caac1b000)

可以看到依赖的都是/lib64/的动态库,所以不是64位/32位问题。但是看到报错,GLIBC_2.14找不到,现在检查系统的glibc库, ldd --version即可检查。 输入命令:

代码语言:javascript
复制
ldd --version
#会输出如下信息:
ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

原来系统预装的glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息。

先回到Hadoop/sbin目录关闭hdfs

代码语言:javascript
复制
 cd /usr/hop/hadoop-2.7.7/sbin/
 stop-dfs.sh

到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz

代码语言:javascript
复制
tar glibc-2.14.tar.gz
xz -d glibc-2.14.tar.xz
tar -xvf glibc-2.14.tar
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/usr/local/glibc-2.14
make -j4
make install

看看现在libc.so.6在哪个位置,然后修改软链接

代码语言:javascript
复制
[root@binghe ~]# whereis libc.so.6
libc.so: /lib64/libc.so.6 /usr/lib64/libc.so
[root@binghe ~]# rm -rf /lib64/libc.so.6
###注意:删除/lib64/libc.so.6软链接之后,不要关闭当前会话,否则将登录不上系统,切记切记切记!
###直接执行以下代码
[root@binghe ~]# LD_PRELOAD=/usr/local/glibc-2.14/lib/libc-2.14.so ln -s /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

再启动:不再报错了!

3.启动yarn集群
  • 同理定位到安装目录的sbin,启动yarn,sh
代码语言:javascript
复制
 cd /usr/hop/hadoop-2.7.7/sbin/
 start-yarn.sh
4.全局输入jps检查
  • 正常是这样的
  • 如果发现node-1没有执行namenode
  •  可以查看namenode启动日志,根据日志记录再去看怎么解决
代码语言:javascript
复制
#在安装目录下找到Logs文件夹
cd /usr/hop/hadoop-2.7.7/logs/
#打开hadoop-root-namenode-node-1.log日志
vim hadoop-root-namenode-node-1.log
5.如果想单节点启动,可以使用以下命令(一般不使用):
  • 也要在sbin目录下执行
代码语言:javascript
复制
#在主节点上使用以下命令启动HDFS NameNode:
    hadoop-daemon.sh start namenode
#在每个从节点上使用以下命令启动HDFS DataNode:
    hadoop-daemon.sh start datanode
#在主节点上使用以下命令启动YARN ResourceManager:
    yarn-daemon.sh  start resourcemanager
#在每个从节点上使用以下命令启动YARN nodemanager:
    yarn-daemon.sh start nodemanager
#以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可。
6.登录web.ui
1.在浏览器输入 node-1:50070
  • 该网址是hdfs集群的网络管理端口
  • 如果这一步不行,检查namenode是否正确启动!
2.在浏览器输入 node-1:8088
  • 打开yarn集群的管理端口
3.在浏览器输入node-2:50090。
4.如果node-2:50090登录不上
  • 在node-2查看node启动日志
代码语言:javascript
复制
#查看方式和上文node-1的一样,只是��再node-2机器上找,而且找的是node-2中执行的是SecondaryNameNode日志
#在安装目录下找到Logs文件夹
cd /usr/hop/hadoop-2.7.7/logs/
  • 发现提示:
代码语言:javascript
复制
Call From node-2/192.168.98.130 to node-1:9000 
failed on connection exception: java.net.ConnectException: 
Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
  • 说明主机9000端口登录不进去
  • 回到主机检查
  • #查看端口 netstat -tlpn
  • 发现9000端口是在127.0.0.1后面,说明此使其他机器访问不了,只能通过本机访问(如果是正确的,应该192.168.X.X)
  • 验证是否连不上
代码语言:javascript
复制
#使用telnet命令验证
telnet node-1 9000
#发现确实连不上
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to node-1.

#如果没有安装telnet,使用yum命令安装
yum install telnet-server
yum install telnet.*
  • 修改/etc/hosts文件,发现原来是笔者修改别的错误时,错误的在前两行后面加上node-1,只要去掉如图就可以了。

Hadoop重要配置解析

基本信息

安装时,我们配置了

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
  • slaves
  1. 其中 xxx-site.xml文件,在官网目录最下方,可以找到响应的xxx-default.xml文件,如果用户没有更改,那么这里面的选项会生效

http://hadoop.apache.org/docs/r2.7.7/

  1. site中配置了,就会覆盖了默认的配置选项
  2. Deprecated Properties中写了过时的配置。
1.core-site.xml
  • 集群全局参数,用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录等 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node-1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/export/data/hopdata</value> </property> </configuration>

序号

参数名

默认值

参数解释

1

fs.defaultFS

file:///

文件系统主机和端口

2

io.file.buffer.size

4096

流文件的缓冲区大小

3

hadoop.tmp.dir

/tmp/hadoop-${user.name}

临时文件夹

2.hdfs-site.xml
  • HDFS参数,如名称节点和数据节点的存放位置、文件副本的个数、文件读取权限等 <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>node-2:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>

序号

参数名

默认值

参数解释

1

dfs.namenode.secondary.http-address

0.0.0.0:50090

secondary namenode 所在主机的ip和端口,定义HDFS对应的HTTP服务器地址和端口

2

dfs.namenode.name.dir

file://${hadoop.tmp.dir}/dfs/name

定义DFS的名称节点在本地文件系统的位置

3

dfs.datanode.data.dir

file://${hadoop.tmp.dir}/dfs/data

定义DFS数据节点存储数据块时存储在本地文件系统的位置

4

dfs.replication

3

缺省的块复制数量

5

dfs.webhdfs.enabled

true

是否通过http协议读取hdfs文件,如果选是,则集群安全性较差

3.mapred-site.xml
    • Mapreduce参数,包括JobHistory Server和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

序号

参数名

默认值

参数解释

1

mapreduce.framework.name

local

取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配

2

mapreduce.jobhistory.address

0.0.0.0:10020

定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录

3

mapreduce.jobhistory.webapp.address

0.0.0.0:19888

定义历史服务器web应用访问的地址和端口

4.yarn-site.xml
    • 集群资源管理系统参数,配置 ResourceManager,NodeManager 的通信端口,web监控端口等 <configuration> <!-- Site specific YARN configuration properties --> <property> <!--指定YARN的主机(ResourceManager)的地址--> <name>yarn.resourcemanager.hostname</name> <value>node-1</value> </property> <property> <!--nodeManager上运行的附属服务,需要配置成maperduce_shuffle,才可用MapReduce程序--> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>

序号

参数名

默认值

参数解释

1

yarn.resourcemanager.address

0.0.0.0:8032

YARN的主机(ResourceManager)的地址, ResourceManager 提供给客户端访问的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等

2

yarn.resourcemanager.scheduler.address

0.0.0.0:8030

ResourceManager提供给ApplicationMaster的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等

3

yarn.resourcemanager.resource-tracker.address

0.0.0.0:8031

ResourceManager 提供给NodeManager的地址。NodeManager通过该地址向RM汇报心跳,领取任务等

4

yarn.resourcemanager.admin.address

0.0.0.0:8033

ResourceManager 提供给管理员的访问地址。管理员通过该地址向RM发送管理命令等。

5

yarn.resourcemanager.webapp.address

0.0.0.0:8088

ResourceManager对web 服务提供地址。用户可通过该地址在浏览器中查看集群各类信息

6

yarn.nodemanager.aux-services

通过该配置项,用户可以自定义一些服务,例如Map-Reduce的shuffle功能就是采用这种方式实现的,这样就可以在NodeManager上扩展自己的服务。

更多Hadoop相关信息见Hadoop 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=13

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hadoop基本简介
    • 版本介绍
      • 集群介绍
        • 优势
          • HDFS集群:
            • YARN集群
              • MapReduce
                • 部署方式
                • 搭建Hadoop
                  • 0.部署计划
                    • 1.环境部署
                      • node-1&2环境
                    • Hadoop集群启动
                      • 1.hdfs格式化
                      • 3.启动yarn集群
                      • 4.全局输入jps检查
                      • 5.如果想单节点启动,可以使用以下命令(一般不使用):
                      • 6.登录web.ui
                      • 1.在浏览器输入 node-1:50070
                      • 2.在浏览器输入 node-1:8088
                      • 3.在浏览器输入node-2:50090。
                      • 4.如果node-2:50090登录不上
                    • Hadoop重要配置解析
                      • 基本信息
                      • 1.core-site.xml
                      • 2.hdfs-site.xml
                      • 3.mapred-site.xml
                      • 4.yarn-site.xml
                  相关产品与服务
                  云 HDFS
                  云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档