Q1.什么是 Hadoop?html
Hadoop 是一个开源软件框架,用于存储大量数据,并发处理/查询在具备多个商用硬件(即低成本硬件)节点的集群上的那些数据。总之,Hadoop 包括如下内容:node
HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统):HDFS 容许你以一种分布式和冗余的方式存储大量数据。例如,1 GB(即 1024 MB)文本文件能够拆分为 16 * 128MB 文件,并存储在 Hadoop 集群中的 8 个不一样节点上。每一个分裂能够复制 3 次,以实现容错,以便若是 1 个节点故障的话,也有备份。HDFS 适用于顺序的“一次写入、屡次读取”的类型访问。算法
MapReduce:一个计算框架。它以分布式和并行的方式处理大量的数据。当你对全部年龄> 18 的用户在上述 1 GB 文件上执行查询时,将会有“8 个映射”函数并行运行,以在其 128 MB 拆分文件中提取年龄> 18 的用户,而后“reduce”函数将运行以将全部单独的输出组合成单个最终结果。数据库
YARN(Yet Another Resource Nagotiator,又一资源定位器):用于做业调度和集群资源管理的框架。缓存
Hadoop 生态系统,拥有 15 多种框架和工具,如 Sqoop,Flume,Kafka,Pig,Hive,Spark,Impala 等,以便将数据摄入 HDFS,在 HDFS 中转移数据(即变换,丰富,聚合等),并查询来自 HDFS 的数据用于商业智能和分析。某些工具(如 Pig 和 Hive)是 MapReduce 上的抽象层,而 Spark 和 Impala 等其余工具则是来自 MapReduce 的改进架构/设计,用于显著提升的延迟以支持近实时(即 NRT)和实时处理。网络
Q2.为何组织从传统的数据仓库工具转移到基于 Hadoop 生态系统的智能数据中心?架构
Hadoop 组织正在从如下几个方面提升本身的能力:并发
现有数据基础设施:app
基于 Hadoop 的更智能的数据基础设施,其中框架
这使得组织可以使用更强大的工具来作出更好的业务决策,这些更强大的工具用于获取数据,转移存储的数据(例如聚合,丰富,变换等),以及使用低延迟的报告功能和商业智能。
Q3.更智能&更大的数据中心架构与传统的数据仓库架构有何不一样?
传统的企业数据仓库架构
基于 Hadoop 的数据中心架构
Q4.基于 Hadoop 的数据中心的好处是什么?
随着数据量和复杂性的增长,提升了总体 SLA(即服务水平协议)。例如,“Shared Nothing”架构,并行处理,内存密集型处理框架,如 Spark 和 Impala,以及 YARN 容量调度程序中的资源抢占。
缩放数据仓库可能会很昂贵。添加额外的高端硬件容量以及获取数据仓库工具的许可证可能会显著增长成本。基于 Hadoop 的解决方案不只在商品硬件节点和开源工具方面更便宜,并且还能够经过将数据转换卸载到 Hadoop 工具(如 Spark 和 Impala)来补足数据仓库解决方案,从而更高效地并行处理大数据。这也将释放数据仓库资源。
探索新的渠道和线索。Hadoop 能够为数据科学家提供探索性的沙盒,以从社交媒体,日志文件,电子邮件等地方发现潜在的有价值的数据,这些数据一般在数据仓库中不可得。
更好的灵活性。一般业务需求的改变,也须要对架构和报告进行更改。基于 Hadoop 的解决方案不只能够灵活地处理不断发展的模式,还能够处理来自不一样来源,如社交媒体,应用程序日志文件,image,PDF 和文档文件的半结构化和非结构化数据。
Q5.大数据解决方案的关键步骤是什么?
提取数据,存储数据(即数据建模)和处理数据(即数据加工,数据转换和查询数据)。
提取数据
从各类来源提取数据,例如:
并将其存储在基于“Hadoop 分布式文件系统”(简称 HDFS)的数据中心上。能够经过批处理做业(例如每 15 分钟运行一次,每晚一次,等),近实时(即 100 毫秒至 2 分钟)流式传输和实时流式传输(即 100 毫秒如下)去采集数据。
Hadoop 中使用的一个经常使用术语是“Schema-On-Read”。这意味着未处理(也称为原始)的数据能够被加载到 HDFS,其具备基于处理应用的需求在处理之时应用的结构。这与“Schema-On-Write”不一样,后者用于须要在加载数据以前在 RDBM 中定义模式。
存储数据
数据能够存储在 HDFS 或 NoSQL 数据库,如 HBase。HDFS 针对顺序访问和“一次写入和屡次读取”的使用模式进行了优化。HDFS 具备很高的读写速率,由于它能够将 I / O 并行到多个驱动器。HBase 在 HDFS 之上,并以柱状方式将数据存储为键/值对。列做为列家族在一块儿。HBase 适合随机读/写访问。在 Hadoop 中存储数据以前,你须要考虑如下几点:
处理数据
Hadoop 的处理框架使用 HDFS。它使用“Shared Nothing”架构,在分布式系统中,每一个节点彻底独立于系统中的其余节点。没有共享资源,如 CPU,内存以及会成为瓶颈的磁盘存储。Hadoop 的处理框架(如 Spark,Pig,Hive,Impala 等)处理数据的不一样子集,而且不须要管理对共享数据的访问。 “Shared Nothing”架构是很是可扩展的,由于更多的节点能够被添加而没有更进一步的争用和容错,由于每一个节点是独立的,而且没有单点故障,系统能够从单个节点的故障快速恢复。
Q6.你会如何选择不一样的文件格式存储和处理数据?
设计决策的关键之一是基于如下方面关注文件格式:
CSV 文件
CSV 文件一般用于在 Hadoop 和外部系统之间交换数据。CSV 是可读和可解析的。 CSV 能够方便地用于从数据库到 Hadoop 或到分析数据库的批量加载。在 Hadoop 中使用 CSV 文件时,不包括页眉或页脚行。文件的每一行都应包含记录。CSV 文件对模式评估的支持是有限的,由于新字段只能附加到记录的结尾,而且现有字段不能受到限制。CSV 文件不支持块压缩,所以压缩 CSV 文件会有明显的读取性能成本。
JSON 文件
JSON 记录与 JSON 文件不一样;每一行都是其 JSON 记录。因为 JSON 将模式和数据一块儿存储在每一个记录中,所以它可以实现完整的模式演进和可拆分性。此外,JSON 文件不支持块级压缩。
序列文件
序列文件以与 CSV 文件相似的结构用二进制格式存储数据。像 CSV 同样,序列文件不存储元数据,所以只有模式进化才将新字段附加到记录的末尾。与 CSV 文件不一样,序列文件确实支持块压缩。序列文件也是可拆分的。序列文件能够用于解决“小文件问题”,方式是经过组合较小的经过存储文件名做为键和文件内容做为值的 XML 文件。因为读取序列文件的复杂性,它们更适合用于在飞行中的(即中间的)数据存储。
注意:序列文件是以 Java 为中心的,不能跨平台使用。
Avro 文件
适合于有模式的长期存储。Avro 文件存储具备数据的元数据,但也容许指定用于读取文件的独立模式。启用彻底的模式进化支持,容许你经过定义新的独立模式重命名、添加和删除字段以及更改字段的数据类型。Avro 文件以 JSON 格式定义模式,数据将采用二进制 JSON 格式。Avro 文件也是可拆分的,并支持块压缩。更适合须要行级访问的使用模式。这意味着查询该行中的全部列。不适用于行有 50+ 列,但使用模式只须要访问 10 个或更少的列。Parquet 文件格式更适合这个列访问使用模式。
Columnar 格式,例如 RCFile,ORC
RDBM 以面向行的方式存储记录,由于这对于须要在获取许多列的记录的状况下是高效的。若是在向磁盘写入记录时已知全部列值,则面向行的写也是有效的。可是这种方法不能有效地获取行中的仅 10% 的列或者在写入时全部列值都不知道的状况。这是 Columnar 文件更有意义的地方。因此 Columnar 格式在如下状况下工做良好
RC 和 ORC 格式是专门用 Hive 写的而不是通用做为 Parquet。
Parquet 文件
Parquet 文件是一个 columnar 文件,如 RC 和 ORC。Parquet 文件支持块压缩并针对查询性能进行了优化,能够从 50 多个列记录中选择 10 个或更少的列。Parquet 文件写入性能比非 columnar 文件格式慢。Parquet 经过容许在最后添加新列,还支持有限的模式演变。Parquet 可使用 Avro API 和 Avro 架构进行读写。
因此,总而言之,相对于其余,你应该会更喜欢序列,Avro 和 Parquet 文件格式;序列文件用于原始和中间存储,Avro 和 Parquet 文件用于处理。
一、海量日志数据提取出某日访问百度次数最多的IP,怎么作?
二、有一个1G大小的文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。
三、更智能&更大的数据中心架构与传统的数据仓库架构有何不一样?
传统的企业数据仓库架构
基于 Hadoop 的数据中心架构
四、运行Hadoop集群须要哪些守护进程?
DataNode,NameNode,TaskTracker和JobTracker都是运行Hadoop集群须要的守护进程。
五、Hadoop支持哪些操做系统部署?
Hadoop的主要操做系统是Linux。 可是,经过使用一些额外的软件,也能够在Windows平台上部署,但这种方式不被推荐。
六、Hadoop常见输入格式是什么?
三种普遍使用的输入格式是:
·文本输入:Hadoop中的默认输入格式。
·Key值:用于纯文本文件
·序列:用于依次读取文件
七、RDBMS和Hadoop的主要区别是什么?
RDBMS用于事务性系统存储和处理数据,而Hadoop能够用来存储大量数据。
八、给定a、b两个文件,各存放50亿个url,每一个url各占64字节,内存限制是4G,让你找出a、b文件共同的URL?
九、如何在生产环境中部署Hadoop的不一样组件?
须要在主节点上部署jobtracker和namenode,而后在多个从节点上部署datanode。
十、添加新datanode后,做为Hadoop管理员须要作什么?
须要启动平衡器才能在全部节点之间从新平均分配数据,以便Hadoop集群自动查找新的datanode。要优化集群性能,应该从新启动平衡器以在数据节点之间从新分配数据。
十一、namenode的重要性是什么?
namenonde的做用在Hadoop中很是重要。它是Hadoop的大脑,主要负责管理系统上的分配块,还为客户提出请求时的数据提供特定地址。
十二、判断:Block Size是不能够修改的。(错误)
分析:
1三、当NameNode关闭时会发生什么?
若是NameNode关闭,文件系统将脱机。
1四、是否能够在不一样集群之间复制文件?若是是的话,怎么能作到这一点?
是的,能够在多个Hadoop集群之间复制文件,这可使用分布式复制来完成。
1五、是否有任何标准方法来部署Hadoop?
如今有使用Hadoop部署数据的标准程序,全部Hadoop发行版都没有什么通用要求。可是,对于每一个Hadoop管理员,具体方法老是不一样的。
1六、HDFS,replica如何定位?
1七、distcp是什么?
Distcp是一个Hadoop复制工具,主要用于执行MapReduce做业来复制数据。 Hadoop环境中的主要挑战是在各集群之间复制数据,distcp也将提供多个datanode来并行复制数据。
1八、什么是检查点?
对文件数据的修改不是直接写回到磁盘的,不少操做是先缓存到内存的Buffer中,当遇到一个检查点Checkpoint时,系统会强制将内存中的数据写回磁盘,固然此时才会记录日志,从而产生持久的修改状态。所以,不用重放一个编辑日志,NameNode能够直接从FsImage加载到最终的内存状态,这确定会下降NameNode启动时间。
1九、什么是机架感知?
这是一种决定如何根据机架定义放置块的方法。Hadoop将尝试限制存在于同一机架中的datanode之间的网络流量。为了提升容错能力,名称节点会尽量把数据块的副本放到多个机架上。 综合考虑这两点的基础上Hadoop设计了机架感知功能。
20、有哪些重要的Hadoop工具?
“Hive”,HBase,HDFS,ZooKeeper,NoSQL,Lucene / SolrSee,Avro,Oozie,Flume,和SQL是一些加强大数据性能的Hadoop工具。
2一、什么是投机性执行?
若是一个节点正在执行比主节点慢的任务。那么就须要在另外一个节点上冗余地执行同一个任务的一个实例。因此首先完成的任务会被接受,另外一个可能会被杀死。这个过程被称为“投机执行”。
2二、Hadoop及其组件是什么?
当“大数据”出现问题时,Hadoop发展成为一个解决方案。这是一个提供各类服务或工具来存储和处理大数据的框架。这也有助于分析大数据,并作出用传统方法难以作出的商业决策。
2三、Hadoop的基本特性是什么?
Hadoop框架有能力解决大数据分析的许多问题。它是基于Google大数据文件系统的Google MapReduce设计的。
2四、是否能够在Windows上运行Hadoop?
能够,可是最好不要这么作,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操做系统。在Hadoop安装中,Windows一般不会被使用,由于会出现各类各样的问题。所以,Windows毫不是Hadoop推荐系统。
2五、主动和被动“名称节点”是什么?
在HA(高可用性)架构中,咱们有两个NameNodes - Active“NameNode”和被动“NameNode”。
· 活动“NameNode”是在集群中运行的“NameNode”。
· 被动“NameNode”是一个备用的“NameNode”,与“NameNode”有着类似的数据。
当活动的“NameNode”失败时,被动“NameNode”将替换群集中的活动“NameNode”。所以,集群永远不会没有“NameNode”,因此它永远不会失败。