Hadoop 十年:从谷歌论文到全球企业的标配技术

Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System)HDFS。

HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

组成

Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),存储 Hadoop 集群中所有存储节点上的文件。HDFS的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。

通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。

HDFS的架构是基于一组特定的节点构建的,这些节点包括NameNode,在HDFS内部提供元数据服务;DataNode为HDFS提供存储块;SecondNameNode解决了单点问题

  • NameNode

    存储HDFS元数据(fsimage HDFS元数据镜像文件 以及 editlog HDFS文件改动日志)

    管理文件系统的命名空间

    创建、删除、移动、重命名文件和文件夹

    接收从DataNode来的Heartbeat和Blockreport,监控其健康状态

  • SecondNameNode

    定期合并fsimage和editlog,并传输给NameNode

    合并时间根据配置文件来进行配置

    • fs.checkpoint.period 时间间隔,默认3600s
    • fs.checkpoint.size edits log大小,默认64M
  • DataNode

    存储数据块(以固定的block为基本单位组织文件内容)

    执行从NameNode来的文件操作命令

    定时向NameNode发送Heartbeat和Blockreport

发行版本

Hadoop有三大发行版本:Apache、Cloudera、Hortonworks

  • Apache 最基础的版本 apache版
  • Cloudera 企业中使用最多的版本(收费) cdh版
  • Hortonworks 文档较好

优势

  • 高可用 Hadoop底层维护了多个数据副本,即使某个计算元素或者存储出现故障,也不会导致数据的丢失
  • 高扩展 在集群间分配任务数据,可方便的扩展数以千计的节点
  • 高效性 Hadoop并行工作,加快任务处理速度
  • 高容错性 可以自动将失败的任务重新分配

场景

适合

  • 大规模数据
  • 写一次,读多次

不适合

  • 低延时的数据访问
  • 大量的小文件
  • 频繁修改文件

配置

配置文件在hadoop下/etc目录下,有几个重要的配置文件

系统默认配置文件为core-default.xml、hdfs-default.xml、mapred-default.xml;管理员自定义配置文件为core-site.xml、hdfs-site.xml、mapred-site.xml,用于定义新的配置属性或者覆盖系统默认配置文件中的默认值。Hadoop会默认优先加载默认配置文件

core-site.xml

这是hadoop的核心配置文件

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

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<!-- fs.defaultFS用于配置NameNode节点的URI,协议、主机或IP、端口 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
	<!-- hadoop.tmp.dir文件系统依赖的基础配置,如果在hdfs-site.xml中不配置NameNode节点和DataNode节点的数据存放位置时,默认放在该目录下 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/data/hadoop/tmp</value>
	</property>
</configuration>

hdfs-site.xml

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

<configuration>
	<!-- 数据备份数 -->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<!-- NameNode节点文件数据存储路径 -->
	<property>
		<name>dfs.name.dir</name>
		<value>/opt/data/hadoop/namenode</value>
	</property>
	<!-- DataNode节点文件数据存储路径-->
	<property>
		<name>dfs.data.dir</name>
		<value>/opt/data/hadoop/datanode</value>
	</property>
</configuration>

mapred-site.xml

xml 复制代码
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<!-- 配置jobTracker的主机名或者ip、端口   还可以配置TaskTracker-->
	<property>
		<name>mapred.job.tracker</name>
		<value>localhost:9001</value>
	</property>

</configuration>

启动

shell 复制代码
# 初始化namenode
hdfs namenode -format

# 启动hadoop(会启动 SecondaryNameNode、NameNode、NodeManager、ResourceManager、DataNode服务)  这个要去start-all.sh所在目录去执行  否则会报错 原因未知
./start-all.sh


# 验证  创建文件
hdfs dfs -mkdir /test

# 查看文件
hdfs dfs -ls /
端口名称 Hadoop2.x Hadoop3.x
NameNode内部通信端口 8020 / 9000 8020 / 9000/9820
NameNode HTTP UI 50070 9870
MapReduce查看执行任务端口 8088 8088
历史服务器通信端口 19888 19888

参考文献

相关推荐
大大大大晴天14 分钟前
每天认识一个组件:数据治理Apache Atlas
大数据
数字新视界32 分钟前
2026模块化机房选型指南:行业市场发展趋势、占有率与竞争梯队分析报告解析
大数据·人工智能·物联网·数据中心·微模块机房·模块化机房·冷通道
姜穆澜3 小时前
OneID 从 0 到 1 完整生产案例(四)
大数据
OsDepK3 小时前
项目快速Git至仓库(完整版)
大数据·git·elasticsearch·搜索引擎
合米AI SOP系统4 小时前
传统产线如何快速上马落地 AI 防错?合米科技 AI SOP 7天即可上线。
大数据·人工智能·科技
思录Echo4 小时前
什么决定具身智能的最终走向?多技术路线与落地现实辨析
大数据·人工智能
xiaohaiAIgeo4 小时前
【2026年】AI监控加行为分析守护实验室安全
大数据·人工智能·科普知识
林墨聊AIGC5 小时前
动漫AI视频创作工具在哪找到的?2026年最新动漫AI视频平台与软件指南
大数据·人工智能·ai作画·aigc·音视频
故七月6 小时前
告别 AI 时代品牌 “隐身”:万域智瞰 AI‑GEO,构建品牌大模型时代营销新基建
大数据·人工智能
数字孪生视频孪生7 小时前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构