持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
前言
大数据技术已经应用在我们生活的方方面面,例如:猜你喜欢、个性化推荐、各种搜索引擎等。
通常大数据的单位至少都是以TB(1TB=1024GB)作为基本单位的,同时大数据还具有5种特点:
- Volume:巨量的数据量,例如:采集、存储、计算等
- Variety:非结构化的数据,例如:文本/图片/视频等
- Value:单条数据通常是价值比较低,即价值密度不高
- Velocity:数据增长速度和处理速度很快,时效比较高。
- Veracity:数据的真实性、准确性
介绍
Hadoop就是大数据的一种实现解决方案,主要解决海量数据的存储和计算的问题,它是一个基于Java编码的Apache开源框架。
借鉴于Google的三篇大数据论文,构建了三个核心部分,HDFS、MapReduce、HBase
这里需要注意的是Hadoop可以指本身框架,也可以表示一个Hadoop生态圈,即HIVE、Spark、HBASE等其他大数据项目。
优势
- 高可靠性:Hadoop底层维护多个数据副本,保证数据不会轻易丢失,即使某个节点出现故障,其他节点也有备份。
- 高扩展性:一个任务会在集群中进行分配,可以方便的进行扩展节点。
- 高效性:基于MapReduce模块,多个节点可以并行同时工作,加快任务处理效率。
- 高容错性:能够自动将失败的任务进行分配
结构
常见的Hadoop版本是1.X和2.X,这两个版本的结构略有不同。2.X的版本添加了Yarn来负责资源的调度。
- 1.X版本中MapReduce同时负责业务处理和资源调度、偶尔性大。
- 2.X版本中新增Yarn模块来负责资源调度、减轻了MapDeduce的职责。
HDFS
HDFS模块负责数据的存储,它是高度容错的,将文件已冗余的形式存储到不同的节点。HDFS中有几个重要的概念,分别是:
- Block:它是
HDFS的基本读写单元,一个文件会被切割为多个Block进行存储(通常是64MB),同时这些块会被复制到多个DataNode中进行存储。
- NameNode:
Master主节点,负责管理文件系统的命名空间、集群配置信息、存储块的复制等。 - DataNode:
Slave从节点,负责存储文件,将Block存储到本地文件系统中,同时保存Block的元信息,并周期的将所保存的Block发送给NameNode。
MapReduce
MapReduce是Hadoop的一个重要模块,它能够在利用多个节点进行并行处理,易于扩展计算节点,则是因为它将计算分为两个步骤:
- Map:将一组数据转换为另一组数据,将各个元素分解为键值对。
- Reduce:将Map计算的输出结果作为输入,并将这些键值对进行汇总操作。
由两个后台程序JobTracker和TaskTracker进行任务的调度和执行。
- JobTracker:负责调度并管理TaskTracker,它可以运行与集群中的任意一个节点。
- TaskTracker:负责执行任务,需要运行于DataNode节点上。