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

Ubuntu 17.04下搭建Hadoop伪分布式集群

170次阅读
没有评论

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

前言

前面只是大概介绍了一下 Hadoop,现在就开始搭建集群了。我们下尝试一下搭建一个最简单的集群。之后为什么要这样搭建会慢慢的分享,先要看一下效果吧!

一、Hadoop 的三种运行模式(启动模式)

 

1.1、单机模式(独立模式)(Local 或 Standalone  Mode)

- 默认情况下,Hadoop 即处于该模式,用于开发和调式。

- 不对配置文件进行修改。
- 使用 本地文件系统,而不是分布式文件系统
-Hadoop 不会启动 NameNode、DataNode、JobTracker、TaskTracker 等守护进程,Map() 和 Reduce()任务作为同一个进程的不同部分来执行的
- 用于 对 MapReduce 程序的逻辑进行调试,确保程序的正确

 

1.2、伪分布式模式(Pseudo-Distrubuted Mode)

-Hadoop 的守护进程运行在本机机器,模拟一个小规模的集群

- 在 一台主机模拟多主机
-Hadoop 启动 NameNode、DataNode、JobTracker、TaskTracker 这些守护进程都在同一台机器上运行,是相互独立的 Java 进程
- 在这种模式下,Hadoop 使用的是 分布式文件系统,各个作业也是由 JobTraker 服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS 输入输出,

以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试 Hadoop 程序的执行是否正确。
- 修改 3 个配置文件:core-site.xml(Hadoop 集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置 HDFS 集群的工作属性)、mapred-site.xml(配置 MapReduce 集群的属性)
- 格式化文件系统

 

1.3、全分布式集群模式(Full-Distributed Mode)

-Hadoop 的守护进程运行在一个集群上

-Hadoop 的 守护进程运行在由多台主机搭建的集群上,是真正的生产环境
- 在所有的主机上 安装 JDK 和 Hadoop,组成相互连通的网络
- 在主机间 设置 SSH 免密码登录,把各从节点生成的公钥添加到主节点的信任列表
- 修改 3 个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定 NameNode 和 JobTraker 的位置和端口,设置文件的副本等参数
- 格式化文件系统

二、搭建伪分布式集群的前提条件

环境:在 Ubuntu17.04

jdk1.8.0_131

hadoop 2.8.1

 

2.1、能够正常运行的 Ubuntu 操作系统

在 Ubuntu 下,软件安装到 /opt 下,当前正在使用的用户,对于 opt 目录需要有读写权限:

1)将 opt 的权限给为 777(漏洞文件),不推荐在生产环境中使用。但是可以在学习和调试环境中使用。

2)sudo

在启动 Hadoop 的各个守护进程的时候,需要使用 sudo。
在管理 Hadoop 的时候,实际上由不同的用户启动不同集群的守护进程。
统一使用当前的用户管理所有集群。

3)该目录的所有者设置为当前用户

 

2.2、安装 JDK,并配置环境变量

1)将 jdk 安装包放在家目录下

2)解压到 opt 目录下

sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /opt

此时在 /opt 目录下:会有一个 jdk1.8.0_131

3)创建软链接

sudo ln -snf /opt/jdk1.8.0_131 /opt/jdk

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

注意:创建软连接的目的是为了,我们在做项目的时候,可能会用到不同的 jdk 版本,这是要换软件的话,只需要修改软链接就可以了。而不用修改配置文件。

4)配置环境变量

局部环境变量:~/.bashrc
全局环境变量:/etc/profile
export JAVA_HOME=/opt/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

source 相关文件(更新配置文件)

5)查看是否安装成功

java、javac、java -version

三、搭建伪分布式集群

 

3.1、安装 hadoop

1)解压 hadoop 安装包到 opt 目录下

sudo  tar zxvf hadoop-2.8.1.tar.gz -C /opt

2)创建软链接

ln -snf /opt/hadoop-2.8.1   /opt/hadoop

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

3)配置环境变量

在 /etc/profile 文件中加入以下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

4)使用 hadoop version 命令测试是否配置成功

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

 

3.2、配置 hadoop

配置文件存放在 /opt/hadoop/etc/hadoop 中有 n 多个文件,暂时我们只需要修改的只有 5 个

1)hadoop-env.sh

大约在 25 行左右

  export JAVA_HOME=${JAVA_HOME}改成 export JAVA_HOME=/opt/jdk

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

注意:在配置文件中有提示我们怎么设置,我们一般不删除,二回选择注释它的提示。

2)core-site.xml

      <configuration>
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://1.0.0.5:9000</value>   
                </property>
            </configuration>

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

分析:1.0.0.5 是你主节点所在主机的 ip,而 9000 为端口

3)hdfs-site.xml

<configuration>
                <property>
                    <name>dfs.nameservices</name>
                    <value>hadoop-cluster</value>
                </property>
                <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:///data/hadoop/hdfs/nn</value>
                </property>
                <property>
                    <name>dfs.namenode.ch
                    eckpoint.dir</name>
                    <value>file:///data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.namenode.checkpoint.edits.dir</name>
                    <value>file:///data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:///data/hadoop/hdfs/dn</value>
                </property>
            </configuration>

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

4)mapred-site.xml

在 hadoop 的相关目录中没有此文件,但是有一个 mapred-site.xml.template 文件,将该文件复制一份为 mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
<configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

5)yarn-site.xml

<configuration>
                <!-- 指定 ResourceManager 的地址 -->
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>1.0.0.5</value>
                </property>
                <!-- 指定 reducer 获取数据的方式 -->
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
                <property>
                    <name>yarn.nodemanager.local-dirs</name>
                    <value>file:///data/hadoop/yarn/nm</value>
                </property>
            </configuration>

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

7)创建相关目录

sudo mkdir -p /data/hadoop/hdfs/nn
        sudo mkdir -p /data/hadoop/hdfs/dn
        sudo mkdir -p /data/hadoop/hdfs/snn
        sudo mkdir -p /data/hadoop/yarn/nm

注意:

如果 使用 sudo 启动 hadoop 的相关进程,这几目录的权限可以不用管
如果是 使用当前的用户启动相关进程,对于 opt 目录,当前用户得有读写权限,对于 /data 目录也需要读写权限

遇到问题:

笔者就是在这个目录权限的问题吃 el 很大得亏。首先为了不使用 sudo 我将 /data 目录的权限修改为 777,然后进行

HDFS 集群格式化的时候,出现:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

这时我在想为什么呢?原来我只是给 data 目录设置了读写权限,但是没有给它的子目录设置读写权限。所以:

        chmod -R 777 /data    递归设置权限

8)对 HDFS 集群进行格式化,HDFS 集群是用来存储数据的。

    hdfs namenode -format
 

3.3、启动集群

1)启动 HDFS 集群

hadoop-daemon.sh start namenode 启动主节点
hadoop-daemon.sh start datanode 启动从节点

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

2)启动 YARN 集群

yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

3)启动作业历史服务器

mr-jobhistory-daemon.sh start historyserver

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

4)jps 命令查看是否启动成功

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

5)HDFS 和 YARN 集群都有相对应的 WEB 监控页面

HDFS:http://ip:50070

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

YARN:http://ip:8088

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

6)HDFS 集群的简单操作命令

hdfs dfs -ls /

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

hdfs dfs -mkdir -p /user/zyh

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

7)YARN 集群的操作 —- 提交任务 / 作业

计算 PI 值的作业:
yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

四、一个问题

我之前没有注意发现我的 yarn 的从节点没有启动起来,在执行计算 PI 值的时候没有成功才看到:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

查看日志发现是配置文件:

在 hdfs-site-web.xml 中:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

查看 http://1.0.0.5:50070 可以查看从节点是否启动:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

在执行上面使用 yarn 集群来计算 pi 值得命令:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

查看 http://1.0.0.5:8088 可以看出计算 pi 值得任务正在执行:

Ubuntu 17.04 下搭建 Hadoop 伪分布式集群

最后成功:

这里就截图了,电脑卡住了,上图中在 web 页面可以查看到任务执行成功,终端中会显示执行结果!

Hadoop2.3-HA 高可用集群环境搭建  http://www.linuxidc.com/Linux/2017-03/142155.htm

Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署  http://www.linuxidc.com/Linux/2017-04/143095.htm

Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm

使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm

Ubuntu 14.04 下 Hadoop 集群安装  http://www.linuxidc.com/Linux/2017-02/140783.htm

CentOS 6.7 安装 Hadoop 2.7.2  http://www.linuxidc.com/Linux/2017-08/146232.htm

Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群  http://www.linuxidc.com/Linux/2017-07/145503.htm

CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建  http://www.linuxidc.com/Linux/2017-06/144932.htm

Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程  http://www.linuxidc.com/Linux/2017-06/144926.htm

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147466.htm

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