Hadoop集群搭建流程

解压 hadoop-3.3.0-Centos7-64-with-snappy.tar.gz,目录结构如下:

  • bin:包含Hadoop最基本的管理脚本和使用脚本,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。
  • etc:存放Hadoop配置文件,包括 core-site.xmlhdfs-site.xmlmapred-site.xml 等从Hadoop 1.0继承而来的配置文件,以及 yarn-site.xml 等Hadoop 2.0新增的配置文件。
  • include:提供的编程库头文件(具体动态库和静态库在 lib 目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。
  • lib:包含了Hadoop对外提供的编程动态库和静态库,与 include 目录中的头文件结合使用。
  • libexec:各个服务对应的shell配置文件所在的目录,可用于配置日志输出、启动参数(如JVM参数)等基本信息。
  • sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
  • share:Hadoop各个模块编译后的jar包所在的目录,包含官方自带示例。

Hadoop配置文件修改

Hadoop安装主要是配置文件的修改,一般在主节点进行修改,完毕后 scp 下发给其他各个从节点机器。

修改hadoop-env.sh

文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使系统中已经设置了JAVA_HOME,Hadoop也是不认识的。

 

sh

复制代码

export JAVA_HOME=/export/server/jdk1.8.0_65

# 文件最后添加

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

修改core-site.xml

core-site.xml是Hadoop的核心配置文件,有默认的配置项 core-default.xmlcore-default.xmlcore-site.xml 的功能是一样的,如果在 core-site.xml 里没有配置的属性,则会自动获取 core-default.xml 里的相同属性的值。

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/data/hadoop-3.3.0</value>
</property>

<!-- 设置HDFS web UI用户身份 -->
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<!-- 整合hive -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

修改hdfs-site.xml

hdfs-site.xml是HDFS的核心配置文件,有默认的配置项 hdfs-default.xmlhdfs-default.xmlhdfs-site.xml 的功能是一样的,如果在 hdfs-site.xml 里没有配置的属性,则会自动获取 hdfs-default.xml 里的相同属性的值。


<!-- 指定secondarynamenode运行位置 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:50090</value>
</property>

修改mapred-site.xml

mapred-site.xml是MapReduce的核心配置文件,有默认的配置项 mapred-default.xmlmapred-default.xmlmapred-site.xml 的功能是一样的,如果在 mapred-site.xml 里没有配置的属性,则会自动获取 mapred-default.xml 里的相同属性的值。

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

修改yarn-site.xml

yarn-site.xml是YARN的核心配置文件,有默认的配置项 yarn-default.xmlyarn-default.xmlyarn-site.xml 的功能是一样的,如果在 yarn-site.xml 里没有配置的属性,则会自动获取 yarn-default.xml 里的相同属性的值。

<!-- 指定YARN的主角色(ResourceManager)的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>

<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 是否将对容器实施物理内存限制 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 是否将对容器实施虚拟内存限制 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
</property>

<!-- 保存的时间7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>

修改workers文件

workers文件里面记录的是集群主机名,主要作用是配合一键启动脚本如 start-dfs.shstop-yarn.sh 用来进行集群启动。workers 文件里面的主机标记的就是从节点角色所在的机器。

vi workers

node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

scp同步安装包

 

cd /export/server scp -r hadoop-3.3.0 root@node2:$PWD scp -r hadoop-3.3.0 root@node3:$PWD

node1 上进行了配置文件的修改,使用 scp 命令将修改好之后的安装包同步给集群中的其他节点。

Hadoop环境变量

3台机器都需要配置环境变量文件。

 

vim /etc/profile

export HADOOP_HOME=/export/server/hadoop-3.3.0

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile

Hadoop集群启动与初体验

启动方式

要启动Hadoop集群,需要启动HDFS和YARN两个集群。注意:首次启动HDFS时,必须对其进行格式化操作。这是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。

 

hadoop namenode -format

单节点逐个启动

在主节点上使用以下命令启动HDFS NameNode:

 

$HADOOP_HOME/bin/hdfs --daemon start namenode

在每个从节点上使用以下命令启动HDFS DataNode:

 

$HADOOP_HOME/bin/hdfs --daemon start datanode

node2 上使用以下命令启动HDFS SecondaryNameNode:

 

$HADOOP_HOME/bin/hdfs --daemon start secondarynamenode

在主节点上使用以下命令启动YARN ResourceManager:

 

$HADOOP_HOME/bin/yarn --daemon start resourcemanager

在每个从节点上使用以下命令启动YARN NodeManager:

 

$HADOOP_HOME/bin/yarn --daemon start nodemanager

如果想要停止某个节点上某个角色,只需要把命令中的 start 改为 stop 即可。

脚本一键启动

如果配置了 etc/hadoop/workers 和SSH免密登录,则可以使用程序脚本启动所有Hadoop两个集群的相关进程,在主节点所设定的机器上执行。

 

hdfs:$HADOOP_PREFIX/sbin/start-dfs.sh yarn:

$HADOOP_PREFIX/sbin/start-yarn.sh 停止集群:stop-dfs.sh、stop-yarn.sh

集群web-ui

一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:

  • NameNode:http://nn_host:port/ 默认 9870
  • ResourceManager:http://rm_host:port/ 默认 8088

Hadoop初体验

HDFS使用

从Linux本地上传一个文本文件到 hdfs/test/input 目录下:

 

hadoop fs -mkdir -p /wordcount/input hadoop fs -put /root/somewords.txt /test/input

运行MapReduce程序

在Hadoop安装包的 share/hadoop/mapreduce 下有官方自带的MapReduce程序。我们可以使用如下的命令进行运行测试。

示例程序jar:

 

hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 20 50

关于圆周率的估算,可以查询资料Monte Carlo方法来计算Pi值。

Hadoop辅助功能

6.1 MapReduce jobhistory服务

背景:默认情况下,yarn上关于MapReduce程序执行历史信息、执行记录不会永久存储;一旦yarn集群重启,之前的信息就会消失。

功能:保存yarn上已经完成的MapReduce的执行信息。

配置:需要修改配置,并重启Hadoop集群才能生效。

修改 mapred-site.xml

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node1:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node1:19888</value>
</property>

同步配置给其他机器:

scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node2:/export/server/hadoop-3.3.0/etc/hadoop/
scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node3:/export/server/hadoop-3.3.0/etc/hadoop/

重启Hadoop集群,并手动启停 jobhistory 服务。

# hadoop2.x版本命令
mr-jobhistory-daemon.sh start|stop historyserver

# hadoop3.x版本命令
mapred --daemon start|stop historyserver

[root@node1 ~]# jps
13794 JobHistoryServer
13060 DataNode
12922 NameNode
13436 NodeManager
13836 Jps
13327 ResourceManager

6.2 HDFS垃圾桶机制

背景:在默认情况下,HDFS没有垃圾桶,意味着删除操作直接物理删除文件。

 

[root@node1 ~]# hadoop fs -rm /itcast/1.txt Deleted /itcast/1.txt

功能:类似回收站,在删除数据时,先进入垃圾桶,如果后悔可以复原。

配置:在 core-site.xml 中开启垃圾桶机制,并指定保存在垃圾桶的时间(单位分钟)。

<property>
    <name>fs.trash.interval</name>
    <value>1440</value>
</property>

同步配置并重启Hadoop服务:

[root@node1 hadoop]# pwd
/export/server/hadoop-3.3.0/etc/hadoop
[root@node1 hadoop]# scp core-site.xml node2:$PWD
[root@node1 hadoop]# scp core-site.xml node3:$PWD

垃圾桶使用:配置好之后,再删除文件将直接进入垃圾桶。

 
[root@node1 ~]# hadoop fs -rm /itcast.txt
INFO fs.TrashPolicyDefault: Moved: 'hdfs://node1:8020/itcast.txt' to trash at: hdfs://node1:8020/user/root/.Trash/Current/itcast.txt

垃圾桶的本质是HDFS上的一个隐藏目录:

hdfs://node1:8020/user/用户名/.Trash/Current

恢复文件

hadoop fs -cp /user/root/.Trash/Current/itcast.txt /

直接删除文件

hadoop fs -rm -skipTrash /itcast.txt

[root@node1 ~]# hadoop fs -rm -skipTrash /itcast.txt
Deleted /itcast.txt

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值