Hadoop集群安装

集群规划

node01 node02 node03
角色 主节点 从节点 从节点
NameNode
DataNode
ResourceManager
NodeManager
SecondaryNameNode
Historyserver

上传安装包到node01

解压到指定目录

tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/

创建软链接

cd /bigdata/server

ln -s hadoop-3.3.3/ hadoop

常见的Hadoop软件目录说明

目录 作用 说明
bin/ Hadoop最基本的管理脚本和使用脚本 hdfs: 文件上传命令 hadoop文件管理基础命令 yarn: 资源调度相关 mapred: 程序运行, 启动历史服务器
etc/ Hadoop配置文件的目录 core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
include/ 对外提供的编程库头文件 对外提供的编程库头文件(具体动态库和静态库在lib目录中), 这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序
lib/ 动态库和静态库 该目录包含了Hadoop对外提供的编程动态库和静态库, 与include目录中的头文件结合使用。
libexec/ shell配置文件 各个服务对用的shell配置文件所在的目录, 可用于配置日志输出、启动参数(比如JVM参数)等基本信息。
sbin/ Hadoop管理命令 主要包含HDFS和YARN中各类服务的启动/关闭脚本
share/ 官方自带示例 Hadoop各个模块编译后的jar包所在的目录

Hadoop配置文件修改

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

hadoop-env.sh

文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器

vim hadoop-env.sh

54行的JAVA_HOME的设置

export JAVA_HOME=/bigdata/server/jdk1.8

在文件末尾添加如下内容

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

hadoop的核心配置文件,有默认的配置项core-default.xml

core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。

cd /bigdata/server/hadoop/etc/hadoop/

vim core-site.xml

在文件的configuration的标签中添加以下内容:

xml 复制代码
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://node01:8020</value>
</property>

<property>
 <name>hadoop.tmp.dir</name>
 <value>/bigdata/data/hadoop</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的核心配置文件,有默认的配置项hdfs-default.xml

hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。

cd /bigdata/server/hadoop/etc/hadoop/

vim hdfs-site.xml

xml 复制代码
 <!-- 指定secondarynamenode运行位置 -->
 <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>node02:50090</value>
 </property>

mapred-site.xml

MapReduce的核心配置文件,有默认的配置项mapred-default.xml

mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。

cd /bigdata/server/hadoop/etc/hadoop/

vim mapred-site.xml

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的核心配置文件,有默认的配置项yarn-default.xml

yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。

cd /bigdata/server/hadoop/etc/hadoop/

vim yarn-default.xml

xml 复制代码
<!-- 指定YARN的主角色(ResourceManager)的地址 -->
 <property>
     <name>yarn.resourcemanager.hostname</name>
     <value>node01</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://node02:19888/jobhistory/logs</value>
 </property>

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

workers

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

cd /bigdata/server/hadoop/etc/hadoop/

vim workers

properties 复制代码
node01
node02
node03

同步hadoop软件包到node02和node03

scp -r hadoop-3.3.3/ node02:$PWD

scp -r hadoop-3.3.3/ node03:$PWD

在node02节点配置软链接

ln -s hadoop-3.3.3/ hadoop

在node03节点配置软链接

ln -s hadoop-3.3.3/ hadoop

[所有节点]配置环境变量

vim /etc/profile

export HADOOP_HOME=/bigdata/server/hadoop

export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

Hadoop集群启动

启动方式

要启动Hadoop集群,需要启动HDFSYARN两个集群。

注意:首次启动HDFS时,必须在主节点node01对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。

hadoop namenode -format

手动单个节点启动

主节点node01启动namenode

cd /bigdata/server/hadoop/bin

./hdfs --daemon start namenode

node02启动secondarynamenode

cd /bigdata/server/hadoop/bin

./hdfs --daemon start secondarynamenode

所有节点启动datanode

cd /bigdata/server/hadoop/bin

./hdfs --daemon start datanode

查看进程情况

jpg

netstat -ntlp

其中hdfs的web端口: node01:9870已经可以正常访问

主节点node01启动ResouceManager

cd /bigdata/server/hadoop/bin

./yarn --daemon start resourcemanager

所有节点启动Nodemanager

cd /bigdata/server/hadoop/bin

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

一键脚本启动

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

hdfs:/bigdata/server/hadoop/sbin/start-dfs.sh

yarn:/bigdata/server/hadoop/sbin/start-yarn.sh

停止脚本

hdfs:/bigdata/server/hadoop/sbin/stop-dfs.sh

yarn:/bigdata/server/hadoop/sbin/stop-yarn.sh
完整的一键启动hdfs和yarn脚本

start-all.sh: 启动所有的hdfs和yarn的脚本

stop-all.sh: 停止所有的hdfs和yarn的脚本

启动后的效果

集群Web访问UI

hdfs: http://node01:9870

yarn:http://node01:8088

MapReduce JobHistory

JobHistory用来记录已经finished的mapreduce运行日志,日志信息存放于HDFS目录中,默认情况下没有开启此功能,需要在mapred-site.xml中配置并手动启动。

修改mapred-site.xml

cd /bigdata/server/hadoop/etc/hadoop/

vim mapred-site.xml

xml 复制代码
	<property>
     <name>mapreduce.jobhistory.address</name>
     <value>node02:10020</value>
 </property>
	<property>
     <name>mapreduce.jobhistory.webapp.address</name>
     <value>node02:19888</value>
 </property>

scp mapred-site.xml node02: P W D s c p m a p r e d − s i t e . x m l n o d e 03 : PWD scp mapred-site.xml node03: PWDscpmapred−site.xmlnode03:PWD

在node02节点启动JobHistory

cd /bigdata/server/hadoop/bin

./mapred --daemon start historyserver

访问web管理界面

http://node02:19888/jobhistory

运行演示程序

在hdfs创建一个目录:

hdfs dfs -mkdir /input

上传文件到hdfs的/input目录

hdfs dfs -put start-all.sh /input

运行示例程序

hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

http://node02:19888/jobhistory\`

运行演示程序

在hdfs创建一个目录:

hdfs dfs -mkdir /input

上传文件到hdfs的/input目录

hdfs dfs -put start-all.sh /input

运行示例程序

hadoop jar /bigdata/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

[外链图片转存中...(img-sGiM0nUt-1728869465896)]

[外链图片转存中...(img-P7KlMe3y-1728869465896)]

相关推荐
流沙QS7 分钟前
MinIO服务器文件复制(Windows环境&Linux环境)
服务器·分布式
费曼乐园16 分钟前
Zookeeper下面的conf目录下面的zoo.cfg
linux·分布式·zookeeper
菜鸟是大神16 分钟前
Kafka为什么要放弃Zookeeper
分布式·zookeeper·kafka
Atlim41 分钟前
flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath
大数据·sql·flink
小刘鸭!43 分钟前
Flink的多流转换(分流-侧输出流、合流-union、connect、join)
大数据·flink
QQ2960787365 小时前
科技风杂志科技风杂志社科技风编辑部2024年第36期目录
大数据
TDengine (老段)5 小时前
TDengine 新功能 VARBINARY 数据类型
大数据·c语言·数据库·时序数据库·tdengine·涛思数据
lucky_syq6 小时前
Spark和Hive的联系
大数据·hive·spark
过往记忆6 小时前
告别 Shuffle!深入探索 Spark 的 SPJ 技术
大数据·前端·分布式·ajax·spark
学术会议10 小时前
“智能控制的新纪元:2025年机器学习与控制工程国际会议引领变革
大数据·人工智能·科技·计算机网络·机器学习·区块链