内容简介:[译] Hadoop 系列(一):BigData 面试 100 问
Hadoop的面试问题及答案 Q1-Q6
70+ FAQ Hadoop面试问题用大量的图表和教程回答了广受欢迎的大数据问题,70+ Scala面试问题和答案还涉及了大数据中非常流行的Scala。
Q1. 什么是 Hadoop?
A1. Hadoop是一个开源软件框架,此框架用于存储大量的数据以及在一个具有多节点商用软件的集群上处理和查询这些数据。总之,Hadoop包括:
1. HDFS (Hadoop分布式文件系统):HDFS 允许你用分布式和冗余式的方式来存储大量的数据。例如, 1GB(i.e1024 MB)文本文件可以拆分为16 * 128MB 的文件,在Hadoop集群上存储8种不同的节点。每个拆分可以容错复制3次,因此即使一个节点出现故障, 你还可以用备份。HDFS有利于顺序写入一次多次读取的访问类型。
2. MapReduce:MapRedduce 是一种计算框架。它可用分布式和并行式的方式来处理大量的数据,当你在为所有年龄大于 18 的用户做一个超过 1GB 的文件
查询时, 将会提示 “8 map” 功能在 128MB 的拆分文件内平行的运行提取年龄大于 18 的用户,然后 reduce 功能将运行中的所有单个输出组成一个最终结果。
3. YARN :(另一种资源 Nagotiator ):一种工作日程安排和集群资源管理的框架。
4. Hadoop 生态系统:具有 15 种以上的框架 & 工具, 例如, Sqoop, Flume, Kafka, Pig, Hive, Spark, Impala, 等提取数据到 HDFS , 在 HDFS 内部准备数据 (i.e. 转换, 丰富, 聚合等 ) 以及在 HDFS 里查询分析业务情报。有些 工具 像 Pig&Hive 是 MapReduce 顶部的分布式层,而其他工具像 Spark & Impala 被 MapReduce 改善了架构 / 设计,而大幅度的改善延迟功能是为了支持接近实时 (i.e. 即 NRT)& 实时处理。
Q2 :为什么一些公司移除传统的数据库工具改用基于 Hadoop 生态系统的更智能的数据中心?
A2 :公司正在投资加强
现有的数据基础设施
-
主要采用结构化数据存储高端 & 昂贵的硬件。
-
主要处理像 ETL 批量作业摄取数据到 RDBMS 和数据仓库系统的数据挖掘, 分析 & 报告来做关键的商业决定。
-
主要处理千兆字节到兆兆字节的数据量。
到基于 Hadoop 更智能的数据基础设施。
-
结构化 (e.g. RDBMS), 非结构化 (e.g, images, PDFs, docs ), & 半结构化 (e.g. logs, XMLs) 数据都可以存储在既可以扩展又可以容错的便宜的商业机器里面。
-
数据可以通过批量作业提取接近实时 (i.e. NRT, 200ms to 2 seconds) 流 e.g. Flume & Kafka).
-
可以用工具例如 Spark & Impala 通过低延迟 (i.e under 100ms) 功能查询数据。
-
可以储存大量的千兆字节到兆兆字节的数据卷。
通过利用更智能 & 更大量的数据和更强大的工具提取数据,存储准备数据 ( 例如:聚合, 丰富, 变换等)这些就可以让企业能够做更好的商业的决策,为报告 & 智慧型商业用低延迟功能查询准备好的数据。
Q3 :更智能更大的大数据中心架构和传统的数据仓库架构有何不同?
传统企业数据库架构 如下:
基于 Hadoop 的数据中心架构
Q4. 基于 Hadoop 的数据中心有什么好处?
-
改善总体的 SLAs (即,服务级协议)作为数据卷 & 复杂度的增长,例如不共享架构, 并行处理。 密集型内存处理框架,像 Spark& Impala 和 YARN 里资源优先调度器。
-
扩展数据仓库可能会很贵: 扩大高端硬件的容量 & 授权数据仓库的工具可能成本会显著增加。基于 Hadoop 的解决方案不仅商业硬件节点更便宜 & 开源工具,而且还可以通过卸载数据转换到 Hadoop 工具上弘扬大数据仓库解决方案;像 Spark & Impala 这些更有效的大数据并行处理工具。这些都将释放数据库资源。
-
新途径的探索 & 领导: Hadoop 可以给数据科学家提供一个探索性沙盒从数据库中无法正常使用的社交媒体,日志文件, 电子邮件等探索潜在数据价值。
-
更好的灵活性: 商业需求不停的在改变, 这就要求架构 & 报告不停更改。基于 Hadoop 的解决方案不仅能够灵活的处理 不断变化的架构 ,而且还可以从消失的资源,像社交媒体,日志文件应用,图片, PDFs ,和文档文件中处理半结构化 & 非结构化的数据。
Q5: 大数据解决方案的关键步骤是什么?
提取数据,存储数据(例如 数据建模)数据处理(例如准备数据, 转换数据,查询数据)
-
提取数据
从各种资源上提取数据像:
1. RDBMs 相关的数据库管理系统,像 Oracle,MySQL, 等。
2. ERP s 企业资源规划系统 像 SAP 。
3. CRM 客 户关系管理系统 像 Siebel, Salesforce 等。
4. 社交媒体数据 & 日志文件
5. 无格式文件, docos, 图片。
将他们存储在基于 Hadoop 的分布式文件系统上,此系统还可以缩写成 HDFS 。数据还可以通过批量作业提取,(例如 每 15 分钟运行一次, 或者每晚上运行一次)接近实时流(例如 100 秒到 2 分钟)和实时流 (即 低于 100 秒)
“Schema-On-Read“ 在 Hadoop 中是一个常用的 术语 , 意思是未处理的数据可以用一个结构加载到 HDFS 里面所需处理时间基于处理应用程序的需求,这和在写模式有所不同,在写模式用于 RDMs 在数据加载之前需要定义架构。
2 )存储数据:
数据可以存储在 HDFS 或 NoSQL 数据库中, 像 Hbase,HDFS 为了能顺序访问已经被优化了 & 一次写入多次读取的使用模式, HDFS 用高速率读写并行化 I/O s 到多个驱动器上, Hbase 在 HDFS 顶层用流行的列式存储关键 / 有价值的数据。列式数据总是在一起就像一个列式家庭一样, Hbase 适合随机读取 / 写入访问。 在数据存储进 Hadoop 之前你需要考虑以下问题。
1. 数据存储格式 :有很多种文件存储格式(例如 CSV, JSON, sequence, AVRO, Parquet, etc ) & 数据压缩算法(例如 snappy, LZO, gzip, bzip2, 等)都可以应用。每种都有独特的优势, 压缩算法 像 LZO 和 bzip2 可以拆分。
2. 数据建模, Hadoop 本身就缺乏架构, 因此 Hadoop 的架构设计需要重点考虑。需要考虑的包括目录结构,存储在 Hbase 目标架构 ,Hive 和 Impala. Hadoop 常常作为整个组织数据中心,数据是用于共享的,因此妥当的架构有组织的存储数据非常重要。
3. 元数据管理: 有关元数据的数据存储。
4. 多租户架构: 作为更智能的数据中心多用户, 多租户应用程序, 这种常常导致数据治理, 标准化, 管理都是一种挑战。
3 )数据处理: Hadoop 用 HDFS 处理框架, 采用不共享架构, 这样在分布式系统里面每个节点都是完全独立于系统中的其他节点的。像 CPU , 存储卡, 磁盘存储等资源都不共享就形成了一个瓶颈, Hadoop 的处理框架,像 Spark, Pig, Hive, Impala 等, 处理不同的数据子集无需管理共享数据访问, 因为这里采用的不共享架构。
1. 可扩展性,越来越多的节点被添加无需长远规划,可按需要随意增加节点。
2. 容错性 每个节点都是独立的, 而且没有单点故障, 系统可以迅速修复单个故障节点。
Q6 ,如何选择不同的文件格式用于存储和数据处理?
A : 关键设计理念之一就是相关文件格式要基于
1) 使用模式 例如, 访问 50 列式存储当中的 5 列式存储 vs 访问大部分的列式存储。
2) 并行处理分裂性。
3) 块压缩节省存储空间 VS 读 / 写 / 转换 / 功能 .
4) 架构演变过程中添加字段 / 修改字段 / 重命名字段。
1, CSV 文件:
CSV 文件一般用于用于在 Hadoop& 外部系统间交换数据, CSV 具有可读 & 解析的, CSVs 可以很方便的从数据库到 Hadoop 或者到解析数据库批量加载。当使用 Hadoop 中 CSVs 文件时绝对不能包含页眉或者页脚行,文件中的每一行都应该有记录。 CSV 文件限制了对作为新的字段只能附加到记录末尾部分架构评估的支持但是现存字段永远不会被限制, CSVs 文件不支持块压缩,因为压缩 CSV 文件需要付出显著的读取成本代价。
2, JSON 文件: JSON 记录和 JSON 文件不一样,每一行都有自身 JSON 记录, JSON 为了每一个记录都能完整架构演变 & 分裂将架构和数据存储在一起, JSON 文件不支持块级压缩。
3, 序列文件:
序列文件用二进制格式存储数据类似 CSV 文件结构。和 CSV 文件一样, 序列文件不存储元数据, 因为只有架构演变是附加新字段到记录最后的部分。 和 CSV 文件不一样的是序列文件不支持块压缩。序列文件也是可以拆分的,序列文件也可以通过结合较小的 XML 文件解决小的文件问题,存储文件名的关键把文件内容作为数值。由于读取序列文件的复杂性, 他们更适 in-flight (即 中间)数据存储。
注:存储格式是以 JAVA 为中心,不能跨平台使用。
4, Avro 文件:
Avro 文件适合长期存储架构, Avro 文件存储元数据和数据, 还允许规范的独立架构用于读取文件。这就使完整架构演变支持重命名,添加和删除文件以及通过定义一个新的独立架构改变字段数据类型。 Avro 文件用 JSON 格式定义架构,数据格式将是二进制 JSON 格式。 Avro 文件也可以拆分 & 支持块压缩, 更适合使用要求行级访问模式的地方,这就意味着要查询所有行里面的列式存储。 当行里面有 50 个以上的列式存储并且使用模式要求只有 10 个或者少于十个列式存储才可以访问,那么 Parquet 文件就更适合这种列式存储访问模式。
5, 列式存储格式:例如, RCFile , ORC 。
RDBMs 用 row-oriented 保存记录作为最有效提取列式存储记录的方式, row-oriented 写入也是最有效的如果在写入记录到磁盘时知道所有的列式存储数值。但是如果写入时不知道所有的列式存储那么这种方法也只能提取一行中 10% 的列式存储,这就是为什么列式存储文件更有意义, 而列式存储效果很好的原因。
-
跳过 I/O 和在列式存储上解压缩都不是查询部分。
-
查询只会访问列式存储的一小部分。
-
对于数据仓库类型的应用程序是用户想要通过大量记录集合聚合固定列式存储的位置 。
RC & ORC 被专门用于写 Hive ,并不像 Parquet 那样通用。
6, Parquet 文件:
Parquet 文件是一种列式存储, 像 RC 或者 ORC 。 Parquet 文件支持查询功能的块压缩和优化比如可以从 50 个列式存储记录选择 10 个或者小于是个列式存储, Parquet 文件写入功能比非列式存储文件格式慢。 Parquet 文件还通过在新的列式存储末尾添加新列限制架构演变, Parquet 文件还可以通过 AvroAPIs and Avro 架构读取和写入。
总之,比起其他格式更喜欢用序列文件, Avro , Parquet 文件格式,序列文件用于行 & 中间结果存储, Avro &Parquet 文件用于数据处理。
欢迎关注微信公众号,阅读更多有关云计算、大数据文章。
原创文章,转载请注明: 转载自 Itweet 的博客
本博客的文章集合:
http://www.itweet.cn/blog/archive/
译文原文:http://www.java-success.com/01-hadoop-bigdata-overview-interview-questions-answers/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Python面试经验总结,面试一时爽,一直面试一直爽!
- 算法面试:数组编码面试问题
- 【面试虐菜】—— JAVA面试题(1)
- 如何面试-作为面试官得到的经验
- PHP面试之网络协议面试题
- 如何克服面试紧张心理 ?(面试答题篇Ⅲ)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
见微知著-WEB用户体验解构
李清 / 机械工业出版社 / 2010-4 / 36.00元
本书用解构分析的方法,系统全面地介绍了Web页面设计的相关知识和要素。 本书从整体到局部地对网站的元素进行解构,包括网站整体布局、整体配色方案,到网站各个功能区域,如登录区、内容区、广告区等,最后到按钮、反馈、验证码、字体、文字语气等多个细节元素。本书通过解构这些元素来讲述如何对用户体验设计进行优化,如何进行搜索引擎优化。 本书适用于网站交互设计师、视觉设计师、产品经理、网站设计人员、......一起来看看 《见微知著-WEB用户体验解构》 这本书的介绍吧!