Hadoop基础知识
♚Hadoop的认识
1.hadoop是google公司三篇论文思想的实现
①hdfs—gfs ②mapreduce-mapreduce③hbase-bigtable
2.hadoop版本的演变
经历三代,与一代相比二代最明显变化增加yarn
3.hadoop特点
①高可靠性②高拓展性③高效性④高容错性
4.狭义的hadoop包括:hdfs、mapreduce、yarn
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并且解压
②安装过程:完成安装前准备工作→修改主机名→映射IP地址和主机名→设置免密登录→设置hadoop配置文件→格式化hdfs→启动hadoop→验证hadoop进程→通过web访问 hadoop→测试hadoop→停止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文件的完整路径
hdfs dfs-copyToLocal[-p][-ignoreCrc]♚NameNode的职责
名称节点(NameNode) 是HDFS的管理者,它的职责有3个方面:
①负责管理和维护HDFS的命名空间(NameSpace),维护命名空间中的两个重要文件—— edits和 fsimage
②管理DataNode上的数据块(Block),维持副本数量
③接收客户端的请求,比如文件的上传、下载、创建目录等
♚DataNode的职责
①保存数据块
②负责客户端对数据块的I0请求
③定期向NameNode发送心跳信息,接受NameNode的指令♚HDFS HA与联邦的区别
①HDFS HA是配置两个NameNode:一个是Active状态 ,另一个是Standby状态。两个 NameNode的内存中各自保存一份元数据。一旦Active的NameNode宕机,Starndby的NameNode就变成Active ,接替原来的NameNode。
②HDFS Federation是HDFS有多个NameNode或NameSpace ,这些NameNode或NameSpace是联合的,它们相互独立且不需要互相协调,各自分工,管理自己的区域,一个NameNode挂掉了,不会影响其他NameNode ,但是每个NameNode还是存在单点故障问题。♚简述fsimage和edits文件合并的过程
①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♚MapReduce 1和Yarn的区别
①MapReduce1由JobTracker负责作业调度与任务监控,而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 就是“分散任务,汇总结果”。总而言之分为三点:
①对付大数据并行处理:分而治之
②上升到抽象模型:Map与Reduce
③上升到构架:以统一构架为程序员隐藏系统层细节♚MapReduce的特点
①易于编程②良好的扩展性③高容错性④擅长对PB级以上海量数据进行离线处理♚简述行式存储与列式存储的优缺点
☞行式存储优点:数据被保存在一-起,INSERT/UPDATE容易
缺点:选择(Selection)时即使只涉及某几列,所有数据也都会被读取。列数不能太多,一般不能超过30列☞列式存储
优点:查询时只有涉及到的列会被读取。任何列都能作为索引。相同列的数据存放在一起, 数据压缩容易。列数可以很多
缺点:选择完成时,被选择的列要重新组装。INSERT/UPDATE比较麻烦。