vlambda博客
学习文章列表

小白入门hadoop,必不可少的hadoop基础知识


刚开始学hadoop的时候,觉得理论还挺好理解的,但是实践起来的时候真的是very  very  very  difficult !(真心建议小白入门一定要打好基础!!!)

你问我什么是hadoop?说真的,我很难说得上来,因为我还没有学到精髓!下面是我在网上搜索的介绍。(有什么不懂就问度娘的真实)



Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。


话不多说,直接上知识!!!(说明这是我自己根据我们老师上课的时候总结,都是一些非常基础的知识),喜欢的朋友们希望点赞在看支持一下啦!!




Hadoop的认识

1.hadoopgoogle公司三篇论文思想的实现

 hdfs—gfs

 mapreduce-mapreduce

 hbase-bigtable

2.hadoop版本的演变

  经历三代,与一代相比二代最明显变化增加yarn

3.hadoop特点

 ①高可靠性②高拓展性③高效性④高容错性

4.狭义的hadoop包括:hdfsmapreduceyarn

5.广义的hadoop是一个很庞大的体系,具有众多组件

6.hadoop的应用场景:①旅游行业②移动数据③电子商务④能源开发⑤节能⑥基础框架管理⑦图像处理⑧诈骗检测⑨IT安全⑩医疗保健

7.hadoop的应用架构:(自下而上)①数据来源层②数据传输层③数据存储层④编程模型层

 ⑤数据分析层⑥上层业务

 

Hadoop生态圈常用组件及其功能

HDFS 分布式文件系统

YARN 资源管理和调度器

MapReduce 分布式并行编程模型

HBase  Hadoop上的非关系型的分布式数据库

Hive  Hadoop上的数据仓库

Pig  一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin

Flume  一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统

Sqoop   用于在Hadoop与传统数据库之间进行数据传递

Zookeeper  提供分布式协调一致性服务

Ambari Hadoop快速部署工具,支持Apache Mahout Hadoop集群的供应、管理和监控Spark   提供一些可扩展的机器学习领域经典算法的实现

Oozie 类似于Hadoop MapReduce的通用并行框架 Hadoop上的工作流管理系统

Storm流计算框架

Kafka一种高吞吐量的分布式发布订阅消息系统,可以处理消者规模的网站中的所有动作

Hadoop的三种安装模式及特点和用途

⑴安装模式

①单机模式(Standalone Mode):Hadoop 运行在一台主机上,按默认配置以非分布式模式运行一个独立的 Java 进程

②伪分布式模式(PseudoDistributedMode):Hadoop 运行在一台主机上,使用多个Java 进程,模仿完全分布式的各类节点

③完全分布式模式(Fully-DistributedMode):完全分布式模式也叫集群模式,是将 Hadoop运行在多台主机中,各个主机按照相关配置运行相应的 Hadoop 守护进程

 

 

 

⑵三种模式的特点及用途

①单机模式:没有分布式文件系统,直接在本地操作系统的文件系统读/写;不需要加载任Hadoop的守护进程。用于本地 MapReduce 程序的调试。它是Hadoop的默认模式。

②伪分布式模式:Hadoop 运行在一台主机上,使用多个 Java 进程,模仿完全分布式的各类节点。伪分布式模式具备完全分布式的所有功能,常用于调试程序。

③完全分布式模式(Fully-Distributed Mode):完全分布式模式是真正的分布式环境,用于实际的生产环境。

 

Hadoop伪分布式模式安装前准备工作和安装过程

①准备工作:安装虚拟机→安装Ubuntu操作系统→关闭防火墙→安装SSH→安装Xshell

  xftp→安装jdk→下载hadoop并且解压

 

请简述副本冗余存储策略

HDFS 默认保存 3 份副本。

1)第一个副本(副本一):放置在上传文件的数据节点;如果是在集群外提交,则随机挑选一台磁盘不太满、CPU 不太忙的节点。

2)第二个副本(副本二):放置在与第一个副本不同的机架的节点上。

3)第三个副本(副本三):放置在与第二个副本相同机架的其他节点上。如果还有更多副本,这些副本会随机选择节点存放。

HDFS shell管理命令(hdfs dfs

 创建文件夹

   hdfs dfs -mkdir

 ②列出指定的文件和目录

   hdfs dfs -ls

 新建文件

   hdfs dfs -touchz

 将本地文件上传到HDFS

   hdfs dfs -put本地文件路径 HDFS路径

   hdfs dfs -copyFromLocal 本地文件路径 HDFS路径

 ⑤将本地文件移动到HDFS

   hdfs dfs -moveFromLocal 本地文件路径  HDFS路径

   ☞与“hdfs dfs -copyFromLocal”命令不同的是,此命令将文件复制到HDFS后,本地的文件会被删除

 ⑥下载文件

hdfs dfs -get HDF文件的完整路径

 

hdfsdfs-copyToLocal[-p][-ignoreCrc][-c

   

 

NameNode的职责

名称节点(NameNode) HDFS的管理者,它的职责有3个方面:

 负责管理和维护HDFS的命名空间(NameSpace),维护命名空间中的两个重要文件——

   edits fsimage

 管理DataNode上的数据块(Block),维持副本数量

 接收客户端的请求,比如文件的上传、下载、创建目录等

DataNode的职责

 ①保存数据块

 ②负责客户端对数据块的I0请求

 ③定期向NameNode发送心跳信息,接受NameNode的指令

HDFS HA与联邦的区别

①HDFS HA是配置两个NameNode:一个是Active状态 ,另一个是Standby状态。两个

  NameNode的内存中各自保存一份元数据一旦ActiveNameNode宕机,StarndbyNameNode就变成Active ,接替原来的NameNode

②HDFS FederationHDFS有多个NameNodeNameSpace ,这些NameNodeNameSpace是联合的,它们相互独立且不需要互相协调,各自分工,管理自己的区域,一个NameNode挂掉了,不会影响其他NameNode ,但是每个NameNode还是存在单点故障问题。

  

♚简述fsimageedits文件合并的过程

SecondaryNameNode 会定期与 NameNode 通信,请求其停止使用 edits 文件,暂时将新的更新操作写到一个新的文件 edits.new 上,这个操作是瞬间完成的。

SecondaryNameNode 通过 HTTPGET 方式从 NameNode 上获取 fsimage edits文件,并下载到本地的相应目录下。

SecondaryNameNode 将下载下来的 fsimage 载入内存,然后一条一条地执行 edits文件中的各项更新操作,使得内存中的 fsimage 保持最新,这个过程就是将 edits fsimage 文件合并。

SecondaryNameNode 执行完③操作之后,会通过 HTTPPOST 方式将新的 fsimage件发送到 NameNode 节点上。

NameNode 用从 SecondaryNameNode 接收到的新的 fsimage 文件替换旧的fsimage 文件,同时将 edits.new 文件更名为 edits


 

 

小白入门hadoop,必不可少的hadoop基础知识

MapReduce 1Yarn的区别

MapReduce1JobTracker负责作业调度与任务监控,而Yarn ResourceManager负责作业调度,Application Master负责任务监控

MapReduce1的任务节点叫做TaskTracker,Yarn的任务节点为NodeManager

MapReduce1的资源调配单元为Slot,而Yarn的资源调配单元为Container

MapReduce 1在节点数达到4000,任务数达到40000就会遇到扩展瓶颈,而Yarn 节点数可达到10000个节点,任务数可达到100000



MapReduce的模型要点

Map方法:每个文件分片由单独的主机处理

Reduce方法:将各个主机计算的结果进行汇总并得到最终结果)

①任务Job = Map + Reduce

Map的输出是Reduce的输入

③所有的输入和输出都是<Key Value>形式

 <k1,v1>Map的输入     <k2,v2>Map的输出

 <k3,v3>Reduce的输入   <k4,v4> Reduce的输出

k2=k3, v3是一个集合, v3的元素就是v2

⑤所有的输入和输出的数据类型必须是hadoop的数据类型(实现Writable接口)

  Integer-> IntWritable   Long -> LongWritable

  String-> Text          null ->Nul/Writable

MapReduce处理的数据-般都是HDFS的数据(HBase )


简述MapReduce设计思想

MapReduce 采用“分而治之”思想,把对大规模数据集的操作,分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的计算结果

简而言之, MapReduce 就是“分散任务,汇总结果”

总而言之分为三点:

①对付大数据并行处理:分而治之

②上升到抽象模型:MapReduce

③上升到构架:以统一构架为程序员隐藏系统层细节

MapReduce的特点

 ①易于编程②良好的扩展性③高容错性④擅长对PB级以上海量数据进行离线处理

简述行式存储与列式存储的优缺点

☞行式存储

优点:数据被保存在一-起,INSERT/UPDATE容易

缺点:选择(Selection)时即使只涉及某几列,所有数据也都会被读取。列数不能太多,一般不能超过30

☞列式存储

优点:查询时只有涉及到的列会被读取。任何列都能作为索引。相同列的数据存放在一起, 数据压缩容易。列数可以很多

缺点:选择完成时,被选择的列要重新组装。INSERT/UPDATE比较麻烦。