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

参考文献

相关推荐
ebok.1 天前
国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台
大数据·人工智能·低代码·ai
民乐团扒谱机1 天前
【微实验】组合优化matlab实战(马科维茨投资模型):在收益与风险之间,寻找最优的人生配比
大数据·人工智能·算法·机器学习·数学建模·matlab·组合优化
星野川崎2061 天前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
小柯南敲键盘1 天前
电商图片翻译工具推荐,批量处理主图视频字幕,免费试用
大数据·人工智能·python·音视频
观远数据1 天前
零售连锁BI选型清单:什么样的场景适合ChatBI,什么样的场景不适合
大数据·人工智能·零售
大大大大晴天1 天前
实时数仓怎么建:基于 StarRocks 的分层设计与实践
大数据
roman_日积跬步-终至千里1 天前
【计算资源节省与稳定性治理】自助查询系统请求幂等性设计
大数据
小玮看世界1 天前
当“安全“变成“教训“:《拟人化暂行办法》时代,AI护栏的过度拒答之困与破局
大数据·人工智能
FserSuN1 天前
回顾Spark的概念与应用
大数据·分布式·spark
一知半解仙1 天前
大国博弈与机器人纪元:我们正站在怎样的历史拐点?
大数据·人工智能·机器人