Hadoop集群搭建 | 青训营笔记

170 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第17天

1. Hadoop

1.1 Hadoop是什么

  • Hadoop是一个由apache基金会所开发的分布式系统基础架构
  • 主要解决海量数据存储和计算问题
  • 广义上是指Hadoops生态圈

三大发行版本:

  • Apache基础版本
  • Cloudera版本
  • Hortonworks版本

Hadoop四大优势:

  • 高可靠性
  • 高扩展性
  • 高效性
  • 高容错性

Hadoop目录结构:

  • bin目录:存放对Hadoop相关服务进行操作的脚本
  • etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
  • lib目录:存放Hadoop的本地库
  • sbin目录:存放启动或停止Hadoop相关服务的脚本
  • share目录:存放Hadoop的依赖jar包、文档和官方案例

1.2 HDFS

HDFS分布式文件系统:

  • NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性,以及每个文件的块信息
  • DataNode:在本地文件存储文件数据块,以及块数据的校验和
  • Secondary NameNode:每隔一段时间向NameNode汇报元数据备份

1.3 YARN

Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器。

  • ResourceManager:管理整个集群资源
  • NodeManager:管理单个节点服务器资源
  • ApplicationMaster:管理单个任务的资源
  • Container:虚拟容器,封装了任务运行需要的内存、CPU、磁盘、网络等资源

1.4 MapReduce

MapReduce将计算过程分为两个阶段:Map 和 Reduce

  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总

2. 搭建集群

2.1 准备

1.准备模板虚拟机

配置IP地址、主机名称映射、内存(4G)、硬盘(50G)
复制三台虚拟机、设置NAT网络模式保证三台主机可以相互Ping通
安装JDK并配置环境变量
安装Hadoop并配置环境变量

Hadoop运行模式:

  • 本地模式:单机运行
  • 伪分布式:单机上,主从节点在一台服务器上
  • 完全分布式:多台服务器组成分布式环境

2.2 配置文件

规划集群:

Hadoop102Hadoop103Hadoop104
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager

(1) core-site.xml

<?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网页登录使用的静态用户为lee -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>lee</value>
    </property>
</configuration>

(2) hdfs-site.xml

<?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>
</configuration>

(3) yarn-site.xml

<?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>
</configuration>

(4) 配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

hadoop102
hadoop103
hadoop104

(5) 启动集群

hdfs namenode -format
sbin/start-dfs.sh

# 在RM节点上启动YARN
sbin/start-yarn.sh

(6) 配置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>