一、选择题部分: 1、Hadoop的起源: Hadoop最初由Doug Cutting和Mike Cafarella开发,受Google GFS和MapReduce论文的启发。源自Apache Lucene项目——一个开源的网络搜索引擎,它旨在提供一个可靠、可扩展的分布式计算平台。(是Apache软件基金会旗下的一个开源分布式计算平台,) 2、hadoop家族常见组件hdfs、mapreduce、yarn、hbase、zookeeper等的来源和特性: HDFS(Hadoop Distributed File System):分布式文件系统,提供高容错和高吞吐量的数据访问。(处理超大数据、流式处理、可以运行在廉价商用服务器) HBase:构建在HDFS之上的分布式、可扩展的大数据存储系统。(具有强大的非结构化数据存储能力,基于列的存储,具有良好的横向扩展能力,而传统关系型数据库是基于行的存储,)针对谷歌bigtable的开源实现。列式数据库适合批量数据处理和即席查询。它的优点是可以降低I/O开销,支持大量并发用户查询、数据处理速度比传统方法快一百倍,因为只用处理可以回答这些查询的列;具有较高的数据压缩比 MapReduce:用于数据处理的编程模型和软件框架。(它将复杂的运行于大规模集群上的并行计算过程高度的抽象为两个函数,Map和Reduce,把输入的数据集切分为若干独立的数据,会分发给一个主节点管理下的各个分节点来共同并行完成。最后通过整合各个节点的中间结果,得到最终结果)针对谷歌mapreduce的开源实现 ZooKeeper: ZooKeeper 是一种分布式的、开源的协调服务,用于管理和协调 Hadoop 集群中的服务。针对谷歌chubby的开源实现 YARN(Yet Another Resource Negotiator):资源调度管理框架。(YARN 的出现是为了解决 Hadoop 1.0 中 JobTracker 的局限性,JobTracker 既负责资源管理又负责任务调度,这带来了性能瓶颈和单点故障的问题。YARN 将资源管理和作业调度的功能分离,引入了ResourceManager 和 ApplicationMaster 两个新的组件:1、ResourceManager 负责整个集群的资源管理和分配。2、ApplicationMaster 负责单个应用程序的资源negotiation和任务调度。 Hive: Hive 是一个数据仓库工具,它提供了一种类似 SQL 的查询语言 (HiveQL)对hadoop,使得能够轻松地进行数据汇总、查询和分析。 Pig: Pig 是一种高级数据流语言和执行框架,用于并行计算。它提供了一种类似于 SQL 的语言 (Pig Latin),用于表达复杂的数据转换。 Mahout: Mahout 是一个可扩展的机器学习和数据挖掘库,提供了各种算法,如聚类、分类和推荐系统。 Flume: Flume 是一个分布式的、高可靠的、高可用的服务,用于有效地采集、聚合和传输大量日志数据。(可以对数据进行简单处理并写到各种数据接收方) Sqoop: Sqoop 是一个工具,用于在 Hadoop 和结构化(关系型)数据存储系统之间高效地传输批量数据。(主要通过Java数据库连接和关系数据库进行交互) Ambari: Ambari 是一个 Web 界面,用于配置、管理和监控 Hadoop 集群。它简化了 Hadoop 的部署和操作。 3、HDFS的读写任务: 读取:客户端向NameNode请求文件位置信息,然后直接从DataNode读取数据块。 写入:客户端先写入临时文件,NameNode协调DataNode完成数据复制,最后提交文件。 4、HBase的消息通信机制: 客户端与HBase的通信: 客户端通过HBase客户端API与HBase集群进行通信。 客户端首先通过Zookeeper获取HMaster和RegionServer的位置信息。 客户端直接与RegionServer通信,进行数据读写操作。 HMaster与RegionServer的通信: