文档章节

搭建Hadoop伪分布式和完全分布式集群

Harmel
 Harmel
发布于 2016/12/29 18:23
字数 2091
阅读 182
收藏 3

一:伪分布式

伪分布式顾名思义就是把软件装在一台服务器上,但操作方式与完全分布式集群没有任何区别,一般用于做测试时使用

安装与配置:我使用的环境是CentOS-7、Hadoop-2.7.3、JDK-1.8

1、解压软件包

tar -zxf hadoop.tar.gz -C /opt
tar -zxf jdk.tar.gz -C /opt

2、配置环境变量

vi /etc/profile

# 在末尾追加后保存
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin

# 让其生效
source /etc/profile

3、修改主机名和IP映射

# 修改主机名,如我当前机器的主机名为hadoop
vi /etc/hostname

# 添加主机名和IP之间的映射
vi /etc/hosts

127.0.0.1         localhost
192.168.56.101    hadoop

4、配置免密登录:由于Hadoop组件之间使用的是SSH通信为了操作方便可以配置免密码登录,也可以不配置后果就是每次启动时都需要输多次密码

# 生成公钥和私钥
ssh-keygen

# 将公钥拷贝给需要免密登录的服务器
ssh-copy-id hadoop

注:免密登录的前提是两台机器都装有SSH

5、配置Hadoop:配置文件在$HADOP_HOME/etc/hadoop

5.1、修改hadoop-env.sh

# 主要是修改这一行,修改为你JDK的安装目录即可
export JAVA_HOME=/opt/jdk

5.2、修改core-site.xml

<configuration>
    <!-- 配置NameNode所在节点 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:9000</value>
    </property>
    <!-- 配置数据存放位置 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-2.7.3/data</value>
    </property>
</configuration>

5.3、修改hdfs-site.xml

<configuration>
    <!-- 配置文件副本数,由于我们是伪分布式只有一台服务器所以配置成1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

5.4、修改mapred-site.xml

<configuration>
    <!-- 指定Hadoop以后MR运行在YARN上,默认值为local -->
    <property>
        <name>mapreduce.framework.name</name>    
        <value>yarn</value>
    </property>
</configuration>

5.5、修改yarn-site.xml

<configuration>
    <!-- 指定NodeManager获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定YARN的ResourceManager的地址,由于只有一台服务器所以填本机即可 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop</value>
    </property>
</configuration>

5.6、修改slaves(可选):该文件的作用为指定DataNode和NodeManager节点所在位置,其默认值为localhost所以可以不需要修改,由于上面做了IP映射也可以修改为hadoop

至此所有配置已经修改完毕,接下来对其进行初始化可启动服务

初始化

1、格式化HDFS:格式完后会发现在core-site.xml配置存放数据的目录下会出现一些文件

hdfs namenode -format

# 在旧版本中使用如下命令,该命令在新版本中已标注为过时但还可以使用
hadoop namenode -format

2、启动与关闭Hadoop服务组件

#----------- 开启服务 ------------
start-all.sh  # 启动所有组件,已不推荐使用

# 官方推荐使用如下两个命令
start-dfs.sh  # 启动NameNode、Secondary NameNode、DataNode
start-yarn.sh # 启动ResourceManager、NodeManager

#----------- 关闭服务 ------------
stop-all.sh # 关闭所有,不推荐使用

stop-dfs.sh  # 关闭NameNode、Secondary NameNode、DataNode
stop-yarn.sh # 关闭ResourceManager、NodeManager

注:启动完后可以使用JDK自带的工具检测是否启动成功,输入命令jps如果出现上文出现的5个进程则表示启动成功

3、测试Web管理界面:下面的hadoop是主机名如果没有配置IP映射换成IP地址即可

HDFS:http://hadoop:50070

YARN:http://hadoop:8088

注:如果访问失败先检测那几个服务进程是还在,排除后再关闭防火墙试试实在不行再翻看日志信息

# CentOS-6
service stop iptables  # 停止防火墙服务
chkconfig iptables off # 禁止开机启动

# CentOS-7
systemctl stop firewalld    # 停止防火墙服务
systemctl disable firewalld # 禁止开机启动

 

二:完全分布式

完全分布式就是把上文提到的5个服务进程部署到不同的节点上运行,这里为了简单演示只使用了3台服务器,规划如下

主机名 / IP 部署服务
hadoop-1  192.168.56.101 NameNode、Secondary NameNode、ResourceManager
hadoop-2  192.168.56.102 DataNode、NodeManager
hadoop-3  192.168.56.103 DataNode、NodeManager

安装与配置:我使用的环境是CentOS-7、Hadoop-2.7.3、JDK-1.8

首先在hadoop-1服务器上执行以下步骤

1、解压软件包

tar -zxf hadoop.tar.gz -C /opt
tar -zxf jdk.tar.gz -C /opt

2、配置环境变量

vi /etc/profile

# 在末尾追加后保存
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin

# 让其生效
source /etc/profile

3、修改主机名和IP映射

# 修改主机名,如我当前机器的主机名为hadoop
vi /etc/hostname

# 添加主机名和IP之间的映射
vi /etc/hosts

# 每台服务器hosts文件均修改为一下内容
127.0.0.1         localhost
192.168.56.101    hadoop-1
192.168.56.102    hadoop-2
192.168.56.103    hadoop-3

4、配置免密登录:由于在hadoop-1上启动NameNode和ResourceManager的时候会SSH远程登录到hadoop-2和hadoop-3上启动DataNode和NodeManager所以只需在hadoop-1上执行如下命令即可

# 生成公钥和私钥
ssh-keygen

# 将公钥拷贝给需要免密登录的服务器
ssh-copy-id hadoop-2
ssh-copy-id hadoop-3

注:免密登录的前提是两台机器都装有SSH

5、配置Hadoop:配置文件在$HADOP_HOME/etc/hadoop

5.1、修改hadoop-env.sh

# 主要是修改这一行,修改为你JDK的安装目录即可
export JAVA_HOME=/opt/jdk

5.2、修改core-site.xml

<configuration>
    <!-- 配置NameNode所在节点 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-1:9000</value>
    </property>
    <!-- 配置数据存放位置 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-2.7.3/data</value>
    </property>
</configuration>

5.3、修改hdfs-site.xml

<configuration>
    <!-- 配置文件副本数,由于我们是规划只有两个DataNode节点所以最多只能存2个副本 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

5.4、修改mapred-site.xml

<configuration>
    <!-- 指定Hadoop以后MR运行在YARN上,默认值为local -->
    <property>
        <name>mapreduce.framework.name</name>    
        <value>yarn</value>
    </property>
</configuration>

5.5、修改yarn-site.xml

<configuration>
    <!-- 指定NodeManager获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定YARN的ResourceManager的地址,由于只有一台服务器所以填本机即可 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-1</value>
    </property>
</configuration>

5.6、修改slaves(可选):该文件的作用为指定DataNode和NodeManager节点所在位置

hadoop-2
hadoop-3

至此所有配置已经修改完毕,接下来将其复制到其他服务器上

scp -r /opt/hadoop-2.7.3 hadoop-2:/opt
scp -r /opt/hadoop-2.7.3 hadoop-3:/opt

初始化

1、格式化HDFS:格式完后会发现在core-site.xml配置存放数据的目录下会出现一些文件

# 在hadoop-1上执行
hdfs namenode -format

# 在旧版本中使用如下命令,该命令在新版本中已标注为过时但还可以使用
hadoop namenode -format

2、启动与关闭Hadoop服务组件

#----------- 开启服务 ------------
# 在hadoop-1上执行
start-all.sh  # 启动所有组件,已不推荐使用

# 官方推荐使用如下两个命令
# 在hadoop-1上执行
start-dfs.sh
# 执行完后每台服务器jps信息
# hadoop-1:NameNode、Secondary NameNode
# hadoop-2:DataNode
# hadoop-3:DataNode

# 在hadoop-1上执行
start-yarn.sh
# 执行完后每台服务器jps信息
# hadoop-1:NameNode、Secondary NameNode、ResourceManager
# hadoop-2:DataNode、NodeManager
# hadoop-3:DataNode、NodeManager

#----------- 关闭服务 ------------
# 在hadoop-1上执行
stop-all.sh # 关闭所有组件,不推荐使用

# 在hadoop-1上执行
stop-dfs.sh  # 关闭hadoop-1上的NameNode、Secondary NameNode和slaves文件中指定节点的DataNode
stop-yarn.sh # 关闭hadoop-1上的ResourceManager和slaves文件中指定节点的NodeManager

3、测试Web管理界面

HDFS:http://hadoop-1:50070

YARN:http://hadoop-1:8088

注:如果访问失败先检测那几个服务进程是还在,排除后再关闭防火墙试试实在不行再翻看日志信息

至此一个完全分布式集群搭建完毕,接下来谈谈怎么增加节点的问题

增加节点

1、拷贝上面配置好的文件到新节点hadoop-4

scp -r /opt/hadoop-2.7.3 hadoop-4:/opt

2、启动hadoop-4上的DataNode、NodeManager

# 在hadoop-4上执行
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager

至此一个新的节点就完成了部署,如果想让以后启动hadoop-1的NameNode和ResourceManager时启动新增节点的DataNode和NodeManager,需要修改hadoop-1上的slaves文件和hosts文件即可

最后说明:也可以把Secondary NameNode和ResourceManager继续拆开部署到其他的节点上,在真实的环境中一般也是把NameNode和Secondary NameNode进行分开部署为了以后能进行数据恢复

将Secondary NameNode部署在hadoop-5上:修改hdfs-site.xml

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop-5:50090</value>
</property>

将ResourceManager部署在hadoop-6上:修改yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop-6</value>
</property>

 

© 著作权归作者所有

Harmel

Harmel

粉丝 9
博文 33
码字总数 14582
作品 0
武汉
程序员
私信 提问
好程序员大数据笔记之:Hadoop集群搭建

在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天集中总结以下笔记,希望对各位同学...

好程序员IT
05/21
17
0
hbase分布式集群搭建

hbase和hadoop一样也分为单机版、伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建。 hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop的完全集群环...

纯洁的虫纸
2017/08/11
0
0
【Hadoop】- Hadoop1.x 伪分布式环境搭建

Hadoop体系的主要组件:HDFS/MapReduce HDFS: Hadoop Distribution File System NameNode、SecondNameNode:名称节点 作用:维护Hadoop中存储数据块的相关信息,例如记录hadoop集群中某个数...

ZeroneLove
02/24
0
0
hadoop本地(独立)模式-安装

本人博客开始迁移,博客整个架构自己搭建及编码http://www.cookqq.com/listBlog.action 本地(独立)模式 Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且...

cookqq
2013/04/11
3K
0
ZooKeeper一二事 - 搭建ZooKeeper伪分布式及正式集群 提供集群服务

集群真是好好玩,最近一段时间天天搞集群,redis缓存服务集群啦,solr搜索服务集群啦,,,巴拉巴拉 今天说说zookeeper,之前搭建了一个redis集群,用了6台机子,有些朋友电脑跑步起来,有点...

风间影月
2016/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部