说实话思维导图真的是一种读书的好方式...特别是读这种全是知识点概念为主的书籍...
Hadoop
Hadoop特性
高可靠性
- 采用冗余数据存储方式
高效性
- 采用分布式存储和分布式处理两大核心技术
高可扩展性
- 可以高效稳定地运行在廉价的计算机集群上
高容错性
- 采用冗余数据存储方式
成本低
- 采用廉价的计算机集群
运行在Linux平台上
- Hadoop 是基于 Java 开发的,可以较好的运行在 Linux 上
支持多种编程语言
- Hadoop 上的应用程序也可以使用其他语言编写
Hadoop生态
HDFS(Hadoop Distributed File System,即Hadoop分布式文件系统)
- 这是 Hadoop 项目两大核心之一,是针对谷歌文件系统(Google File System,GFS)的开源实现
HBase
- 这是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,是针对谷歌 BigeTable 的开源实现
Hadoop MapReduce
- 这是针对谷歌 MapReduce 的开源实现,它是一种编程模型,用于大规模数据集(大于1TB)的并行计算,它将并行计算过程高度地抽象到两个函数 Map 和 Reduce 上,简单来说就是“分而治之”,即把输入的数据集切成若干独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成,然后通过整合各个节点的中间结果得到最终结果
Hive
- 这是一个基于 Hadoop 的数据仓库工具,可以用于对 Hadoop 文件中的数据集进行数据整理、特殊查询和分析存储
Pig
- 这是一种数据流语言和运行环境,适合用于 Hadoop 和 MapReduce 平台来查询大型半结构化数据集, Pig 是一个相对简单的语言,对比 MapReduce 在执行搜索满足某个给定搜索条件的记录时,Pig只需要编写一个简单的脚本在集群中自动并行处理和转发
Mahout
- 这是 Apache 软件基金会旗下的一个开源项目,它提供一些可扩展的机器学习领域经典算法的实现。
Zookeeper
- 这是针对谷歌 Chubby 的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务(如同一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等),用于构建分布式应用,减轻分布式应用程序所承担的协调任务;开发者可以使用 Java 或 C 来进行编程接入
Flume
- 这是 Cloudera 提供的一个高可用的、高可靠的分布式的海量日志采集、聚合和传输的系统,它支持在日志系统中定制各类数据发送方,用于收集数据,同时它还提供对数据的简单处理并写到各种数据接受方的能力
Sqoop(SQL-to-Hadoop)
- 它主要用于在 Hadoop 和关系数据库之间交换数据,可以改进数据的互操作性,它支持增量更新,可以将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳
Ambari
- 这是一种基于 Web 的工具,支持 Apache Hadoop 的安装、部署、配置和管理
Hadoop配置文件
hadoop-env.sh
-
Bash脚本
- 记录配置 Hadoop 运行所需的环境变量,以运行 Hadoop
core-site.xml
-
Hadoop 配置 XML
- Hadoop core 的配置项,如 HDFS 和 MapReduce 常用的 I/O 设置等
hdfs-site.xml
-
Hadoop 配置 XML
- Hadoop 守护进程的配置项,包括 NameNode 、 Secondary NameNode 和 DataNode 等
mapred-site.xml
-
Hadoop 配置 XML
- MapReduce 守护进程的配置项,包括 JobTracker 和 TaskTracker
masters
-
纯文本
- 运行 SecondaryNameNode 的机器列表(每行一个)
slaves
-
纯文本
- 运行 DataNode 和 TaskTracker 的机器列表(每行一个)
hadoop-metrics.properties
-
Java属性
- 控制 metrics 在 Hadoop 上如何发布的属性
XMind - Trial Version