阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

实战CentOS系统部署Hadoop集群服务

406次阅读
没有评论

共计 9093 个字符,预计需要花费 23 分钟才能阅读完成。

Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称 HDFS。HDFS 有高容错性特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序;HDFS 放宽了(relax)POSIX 的要求,可以以流的形式访问(streaming access)文件系统中的数据。

实战 CentOS 系统部署 Hadoop 集群服务
HDFS 架构图

一、Hadoop 框架简介

Hadoop 的框架最核心的设计就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,则 MapReduce 为海量的数据提供了计算。

HDFS(Hadoop Distribution File System),称为 Hadoop 分布式文件系统,主要特点:

  • HDFS 最小以 64MB 的数据块存储文件,相比其他文件系统中的 4KB~32KB 分块大得多。
  • HDFS 在时延的基础上对吞吐量进行了优化,它能够高效处理了对大文件的读请求流,但不擅长对众多小文件的定位请求
  • HDFS 对普通的“一次写入,多次读取”的工作负载进行了优化。
  • 每个存储节点运行着一个称为 DataNode 的进程,它管理着相应主机上的所有数据块。这些存储节点都由一个称为 NameNode 的主进程来协调,该进程运行于一台独立进程上。
  • 与磁盘阵列中设置物理冗余来处理磁盘故障或类似策略不同,HDFS 使用副本来处理故障,每个由文件组成的数据块存储在集群众的多个节点,HDFS 的 NameNode 不断监视各个 DataNode 发来的报告。
1、MapReduce 工作原理

客户端,提交 MapReduce 作业;jobtracker,协调作业的运行,jobtracker 是一个 java 应用程序,它的主类是 JobTracker;tasktracker。运行作业划分后的任务,tasktracker 是一个 java 应用程序,TaskTracker 是主类。

2、Hadoop 优点

Hadoop 是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

高可靠性:Hadoop 按位存储和处理数据的能力值得人们信赖。

高扩展性:Hadoop 是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

高效性:Hadoop 能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

高容错性:Hadoop 能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

低成本:与一体机、商用数据仓库以及 QlikView、Yonghong Z-Suite 等数据集市相比,hadoop 是开源的,项目的软件成本因此会大大降低。

Hadoop 带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

Hadoop 官网:http://hadoop.apache.org/

二、先决条件

保持 Hadoop 集群每个节点配置环境一致,安装 java,配置 ssh。

实验环境:

Platform:xen vm

OS: CentOS 6.8

Software: hadoop-2.7.3-src.tar.gz, jdk-8u101-linux-x64.rpm

Hostname IP Address OS version Hadoop role Node role
linux-node1 192.168.0.89 CentOS 6.8 Master namenode
linux-node2 192.168.0.90 CentOS 6.8 Slave datenode
linux-node3 192.168.0.91 CentOS 6.8 Slave datenode
linux-node4 192.168.0.92 CentOS 6.8 Slave datenode

# 把需要的软件包下载下来上传到集群的各个节点上

三、集群的构架和安装
1、Hosts 文件设置

#Hadoop 集群中的每个节点的 hosts 文件都需要修改

[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain linux-node1
192.168.0.89 linux-node1
192.168.0.90 linux-node2
192.168.0.91 linux-node3
192.168.0.92 linux-node4
2、安装 java

# 提前把下载好的 JDK(rpm 包)上传到服务器上,然后安装

rpm -ivh jdk-8u101-linux-x64.rpm
export JAVA_HOME=/usr/java/jdk1.8.0_101/
export PATH=$JAVA_HOME/bin:$PATH
# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
3、安装 hadoop

# 创建 hadoop 用户,设置使用 sudo

[root@linux-node1 ~]# useradd hadoop && echo hadoop | passwd --stdin hadoop
[root@linux-node1 ~]# echo "hadoopALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
[root@linux-node1 ~]# su - hadoop
[hadoop@linux-node1 ~]$ cd /usr/local/src/
[hadoop@linux-node1src]$wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
[hadoop@linux-node1 src]$ sudo tar zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/ && cd /home/hadoop
[hadoop@linux-node1 home/hadoop]$ sudo mv hadoop-2.7.3/ hadoop
[hadoop@linux-node1 home/hadoop]$ sudo chown -R hadoop:hadoop hadoop/

# 将 hadoop 的二进制目录添加到 PATH 变量,并设置 HADOOP_HOME 环境变量

[hadoop@linux-node1 home/hadoop]$ export HADOOP_HOME=/home/hadoop/hadoop/
[hadoop@linux-node1 home/hadoop]$ export PATH=$HADOOP_HOME/bin:$PATH
4、创建 hadoop 相关目录
[hadoop@linux-node1 ~]$ mkdir -p /home/hadoop/dfs/{name,data}
[hadoop@linux-node1 ~]$ mkdir -p /home/hadoop/tmp

# 节点存储数据备份目录

sudo mkdir -p /data/hdfs/{name,data}
sudo chown -R hadoop:hadoop /data/

# 上述操作需在 hadoop 集群的每个节点都操作

5、SSH 配置

# 设置集群主节点免密码登陆其他节点

[hadoop@linux-node1 ~]$ ssh-keygen -t rsa
[hadoop@linux-node1 ~]$ ssh-copy-id linux-node1@192.168.0.90
[hadoop@linux-node1 ~]$ ssh-copy-id linux-node2@192.168.0.91
[hadoop@linux-node1 ~]$ ssh-copy-id linux-node3@192.168.0.92

实战 CentOS 系统部署 Hadoop 集群服务

# 测试 ssh 登录
实战 CentOS 系统部署 Hadoop 集群服务

6、修改 hadoop 的配置文件

文件位置:/home/hadoop/hadoop/etc/hadoop,文件名称:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

(1)配置 hadoop-env.sh 文件

# 在 hadoop 安装路径下,进入 hadoop/etc/hadoop/ 目录并编辑 hadoop-env.sh,修改 JAVA_HOME 为 JAVA 的安装路径

[hadoop@linux-node1 home/hadoop]$ cd hadoop/etc/hadoop/
[hadoop@linux-node1 hadoop]$ egrep JAVA_HOME hadoop-env.sh
# The only required environment variable is JAVA_HOME.  All others are
# set JAVA_HOME in this file, so that it is correctly defined on
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_101/

(2)配置 yarn.sh 文件

指定 yran 框架的 java 运行环境,该文件是 yarn 框架运行环境的配置文件,需要修改 JAVA_HOME 的位置。

[hadoop@linux-node1 hadoop]$ grep JAVA_HOME yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_101/

(3)配置 slaves 文件

指定 DataNode 数据存储服务器,将所有的 DataNode 的机器的主机名写入到此文件中,如下:

[hadoop@linux-node1 hadoop]$ cat slaves
linux-node2
linux-node3
linux-node4

Hadoop 3 种运行模式

本地独立模式:Hadoop 的所有组件,如 NameNode,DataNode,Jobtracker,Tasktracker 都运行在一个 java 进程中。

伪分布式模式:Hadoop 的各个组件都拥有一个单独的 Java 虚拟机,它们之间通过网络套接字通信���

完全分布式模式:Hadoop 分布在多台主机上,不同的组件根据工作性质的不同安装在不通的 Guest 上。

# 配置完全分布式模式

(4)修改 core-site.xml 文件,添加红色区域的代码,注意蓝色标注的内容

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://linux-node1:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>

(5)修改 hdfs-site.xml 文件

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux-node1:9001</value>
<description># 通过 web 界面来查看 HDFS 状态 </description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description># 每个 Block 有 2 个备份 </description>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

(6)修改 mapred-site.xml

这个是 mapreduce 任务的配置,由于 hadoop2.x 使用了 yarn 框架,所以要实现分布式部署,必须在 mapreduce.framework.name 属性下配置为 yarn。mapred.map.tasks 和 mapred.reduce.tasks 分别为 map 和 reduce 的任务数。

[hadoop@linux-node1 hadoop]$ cp 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>linux-node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux-node1:19888</value>
</property>
</configuration>

(7)配置节点 yarn-site.xml

# 该文件为 yarn 架构的相关配置

<?xml version="1.0"?>
<!-- mapred-site.xml  -->
<configuration>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx400m</value>
<!--Not marked as final so jobs can include JVM debuggung options -->
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml  -->
<configuration>
<!-- Site specific YARN configuration properties -->
<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>linux-node1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>linux-node1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>linux-node1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>linux-node1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>linux-node1:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
</configuration>
7、复制 hadoop 到其他节点
scp -r /home/hadoop/hadoop/ 192.168.0.90:/home/hadoop/
scp -r /home/hadoop/hadoop/ 192.168.0.91:/home/hadoop/
scp -r /home/hadoop/hadoop/ 192.168.0.92:/home/hadoop/
8、在 linux-node1 使用 hadoop 用户初始化 NameNode
/home/hadoop/hadoop/bin/hdfs namenode –format

实战 CentOS 系统部署 Hadoop 集群服务

#echo $?
#sudo yum –y install tree
# tree /home/hadoop/dfs

实战 CentOS 系统部署 Hadoop 集群服务

9、启动 hadoop
/home/hadoop/hadoop/sbin/start-dfs.sh
/home/hadoop/hadoop/sbin/stop-dfs.sh

实战 CentOS 系统部署 Hadoop 集群服务

#namenode 节点上面查看进程

ps aux | grep --color namenode

实战 CentOS 系统部署 Hadoop 集群服务

#DataNode 上面查看进程

ps aux | grep --color datanode

实战 CentOS 系统部署 Hadoop 集群服务实战 CentOS 系统部署 Hadoop 集群服务
实战 CentOS 系统部署 Hadoop 集群服务

10、启动 yarn 分布式计算框架
[hadoop@linux-node1 .ssh]$ /home/hadoop/hadoop/sbin/start-yarn.sh starting yarn daemons

实战 CentOS 系统部署 Hadoop 集群服务
#NameNode 节点上查看进程
实战 CentOS 系统部署 Hadoop 集群服务

ps aux | grep --color resourcemanager

#DataNode 节点上查看进程
实战 CentOS 系统部署 Hadoop 集群服务

ps aux | grep --color nodemanager

注:start-dfs.sh 和 start-yarn.sh 这两个脚本可用 start-all.sh 代替

/home/hadoop/hadoop/sbin/stop-all.sh
/home/hadoop/hadoop/sbin/start-all.sh

实战 CentOS 系统部署 Hadoop 集群服务

11、启动 jobhistory 服务,查看 mapreduce 状态

# 在 NameNode 节点上

[hadoop@linux-node1 ~]$ /home/hadoop/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /home/hadoop/hadoop/logs/mapred-hadoop-historyserver-linux-node1.out
12、查看 HDFS 分布式文件系统状态
/home/hadoop/hadoop/bin/hdfs dfsadmin –report

实战 CentOS 系统部署 Hadoop 集群服务

# 查看文件块组成,一个文件由那些块组成

/home/hadoop/hadoop/bin/hdfs fsck / -files -blocks

实战 CentOS 系统部署 Hadoop 集群服务

13、web 页面查看 hadoop 集群状态

查看 HDFS 状态:http://192.168.0.89:50070/
实战 CentOS 系统部署 Hadoop 集群服务
实战 CentOS 系统部署 Hadoop 集群服务
查看 Hadoop 集群状态:http://192.168.0.89:8088/
实战 CentOS 系统部署 Hadoop 集群服务

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

CentOS 6.3 下 Hadoop 伪分布式平台搭建  http://www.linuxidc.com/Linux/2016-11/136789.htm

Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137246.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9093字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7996930
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...