1. hadoop集群规划

1.准备3台客户机(关闭防火墙,静态ip,主机名称)

2.安装jdk

3.配置环境变量

4.安装hadoop,hadoop版本是3.1.3,包名为hadoop-3.1.3.tar.gz

5.配置环境变量

6.配置集群

7.单点启动

8.配置ssh

9.群起集群并测试集群

注意: NameNode和SecondaryNameNode和ResourceManage三者很消耗内存,不要安装在同一台服务器上

Linux hadoop分布式 分布式hadoop搭建_Linux hadoop分布式

2. hadoop具体安装步骤

2.0 端口号说明

namenode端口号说明

namenode

版本号

端口号

1.x

8020

2.x

9000

3.0.x

9020

3.1.x

8020

namenode web端口号说明

namenode web端口号

版本号

端口号

1.x 2.x

50070

3.x

9870

secondarynamenode web端口号说明

secondarynamenode web端口号

版本号

端口号

1.x 2.x

50090

3.x

9868

2.1 上传

2.2 解压

2.3 修改hadoop相关配置文件

有core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,works

(1)core-site.xml修改的内容有:

①NameNode的内部连接地址;

②hadoop数据存储的目录,默认是linux临时目录,到日期会被清除掉;

③配置hdfs登录的静态用户moxi,(好处是当使用的是moxi用户启动的hadoop,有权限进行删除);

④配置moxi为代理用户(因为在使用hive的时候,每一个用户都会创建一个hiveserver2,这个客户端非常占用空间,就想着所有用户用同一个hiveserver2,提交作业,如果不配置不可以,配置了就能用。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
	</property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
	</property>

<!-- 配置HDFS网页登录使用的静态用户为moxi -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>moxi</value>
	</property>

<!-- 配置该moxi(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
	</property>
<!-- 配置该moxi(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.moxi.groups</name>
        <value>*</value>
	</property>
<!-- 配置该moxi(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.moxi.users</name>
        <value>*</value>
	</property>
</configuration>

(2)hdfs-site.xml修改的内容有:

①配置nn web端访问的地址,配置为hadoop102:9870

②配置2nn web端访问地址,配置为hadoop104:9868

③配置hdfs副本的数量,一般指定为3个,测试集群一般是1个

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
    
    <!-- 环境指定HDFS副本的数量3 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

(3)yarn-site.xml修改的内容有:

①指定MR走shuffle

②指定ResourceManager的地址:在hadoop103

③环境变量的继承

④yarn单个容器允许分配的最大最小内存,(默认是8G,需要修改,限定为和服务器一样大),这个参数每个机器单独设置,(内存为8,4,4和6,3,3需要修改,最大内存和服务器分配的最大内存一样,否则,内存超出会崩)

⑤yarn容器允许管理的物理内存大小,这个参数每个机器单独设置

⑥关闭yarn对虚拟内存的限制,物理内存不能关闭。(默认都是true,检测nodemanager和其它组件内存使用情况,超过内存大小就阻止它使用,把他干掉,很危险,需要关闭;虚拟内存,就是把超出内存的空间运行在磁盘上)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    
    <!--yarn单个容器允许分配的最大最小内存,最大内存不超过虚拟机分配的内存-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小,最大内存不超过虚拟机分配的内存 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

(4)mapred-site.xml修改的内容有:

①指定mapreduce程序在yarn上运行

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(5)配置集群works:

在1.x和2.x名字叫slaves,不叫works。

把默认的localhost删掉,注意:填写下面的hadoop102,hadoop103,hadoop104,需要提前做好主机名和ip地址的映射;下面的文件不能有空格例如在hadoop102后面不能有空格;也不能有空行,在hadoop104下面不能有空行

hadoop102
hadoop103
hadoop104

2.4 配置历史服务器

为什么要配置历史服务器?

任务在运行过程中,会记录运行过程的日志,不配置,运行结束了就结束了。

在hadoop-3.1.3/etc/hadoop/mapred-site.xml文件下配置

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

2.5 配置日志聚集功能

作用:不配置,查看日志需要在各自台上查询各自的,这是很麻烦的一件事,如果配置过之后,就可以在一台设备上,查看所有设备的日志,这是很方便的

在 yarn-site.xml上配置。

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

<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

2.6 分发hadoop到其它集群

[moxi@hadoop102 hadoop-3.1.3]$ xsync /opt/module/hadoop-3.1.3/

2.7 配置hadoop环境变量

[moxi@hadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容:

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

2.8 分发环境变量

注意:在root下,需要把分发指令路径写完整。

[moxi@hadoop102 hadoop-3.1.3]$ sudo /home/moxi/bin/xsync /etc/profile.d/my_env.sh

2.9 source 是之生效

[moxi@hadoop102 module]$ source /etc/profile.d/my_env.sh
[moxi@hadoop103 module]$ source /etc/profile.d/my_env.sh
[moxi@hadoop104 module]$ source /etc/profile.d/my_env.sh

2.10 第一次启动需要格式化namenode

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[moxi@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode -format

2.11 单节点启动集群

(1)启动HDFS

[moxi@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

(2)在配置了ResourceManager的节点(一定要在hadoop103上启动,因为在103上配置的)启动YARN

[moxi@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

2.12 在web端查看页面

①Web端查看HDFS的Web页面:http://hadoop102:9870/

②Web端查看yarn的web页面:http://hadoop103:8088/

2.13 hadoop群起集群配置

在一台设备上启动所有进程。

进入目录/home/moxi/bin

编辑文件vim hdp.sh

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

给权限

chmod 777 hdp.sh

使用指南:

hdp.sh start

安装包链接:

链接:https://pan.baidu.com/s/1NUBmKLx6K71H95OZwOweag?pwd=kpv1
提取码:kpv1