blog
blog copied to clipboard
Hadoop
Apache Hadoop 数据密集型,分布式应用程序
现在普遍认为整个 Apache Hadoop“平台”包括:
- Hadoop内核
- MapReduce:应用程序被分割成许多小部分,每个部分都能在集群中的任意节点上运行或重新运行
- HDFS,Hadoop分布式文件系统:用以存储所有计算节点的数据,为整个集群带来高带宽
- 一些相关项目
- Apache HBase:分布式NoSQL列数据库,类似谷歌公司BigTable。
- Apache Hive:构建于hadoop之上的数据仓库,通过一种类SQL语言HiveQL为用户提供数据的归纳、查询和分析等功能
- ...等等
Hadoop 框架透明地为应用提供可靠性和数据移动。MapReduce和分布式文件系统的设计,使整个框架能够自动处理节点故障
https://zh.wikipedia.org/wiki/Apache_Hadoop
集群 vs 分布式
- 集群:同一个服务,部署在多个服务器上。描述了一种物理形态
- 复制品,提供相同的功能。几个节点=几倍
- 分布式:一个业务,拆分成多个子业务,部署在不同的服务上。描述了一种工作方式
- 完整系统->独立子系统(不同业务功能)
- 子系统之间的通信(RPC/) 服务之间的依赖关系
- 独立开发、部署、测试,边界明确,即低耦合
https://www.zhihu.com/question/20004877
内存单位
1KB = 1024b
- TB
- GB
- MB
- KB
- bite
#cat /proc/meminfo
MemTotal: 7815864 kB # 约 8G
MemFree: 527652 kB # 约 500MB
MemAvailable: 2259584 kB # 约 2G
k 表示 1000 K 表示 1024
Hadoop入门
几个模块
- 原始日志:
- Apache Chukwa:日志收集,收集各种数据保存在HDFS中(供Hadoop进行MapReduce操作)
- Apache Flume:海量日志聚合的系统,可用于日志数据收集、处理、传输
- HDFS
- MapReduce
- Apache Hive:将结构化的数据文件映射为一张数据库表,通过类SQL快速实现简单的MapReduce统计,不必开发专门的MapReduce应用
- Apache Pig:数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算
- Apache HBase:基于HADOOP的分布式海量数据库。分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集。
- Apache Sqoop:数据导入导出工具(比如用于mysql和HDFS之间)
- Apache Oozie:工作流调度框架,管理/协调在Hadoop平台上的任务(HDFS/Pig/MapReduce)
相关技术
- HDFS(分布式文件系统):解决海量数据存储
- MAPREDUCE(分布式运算程序开发框架 ):解决海量数据计算
- HIVE:基于HADOOP的分布式数据仓库,提供基于SQL的查询数据操作
- YARN(作业调度和集群资源管理的框架):解决资源任务调度
其它:
- ZOOKEEPER:分布式协调服务基础组件
- Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
- Flume:日志数据采集框架 Impala:基于Hadoop的实时分析
补充
- HADOOP集群
- HDFS集群:负责海量数据的存储。NameNode、DataNode、SecondaryNameNode
- YARN集群:负责海量数据运算时的资源调度。ResourceManager、NodeManager
- Hadoop部署方式
- Standalone mode(独立模式):在单机部署
- Pseudo-Distributed mode(伪分布式模式):在单机部署
- Cluster mode(群集模式)
YARN 架构
YARN 是 Hadoop 2.0 提出的资源管理、任务调度框架。解决了很多 Hadoop 1.0 时代的痛点。
Yet Another Resource Negotiator
YARN 的基本思想是将“资源管理”和“作业调度/监控”的功能分为独立的守护进程。它整体上是 Master/Slave 结构:
- 全局的
RM
ResourceManager 为 Master,负责系统中的所有应用程序的资源分配- Scheduler(调度器)
- Applications Manager,ASM(应用程序管理器)
-
NM
NodeManager 为 Slave,负责每台机器中容器代理、资源监控(cpu,内存,磁盘,网络),并将这些情况报告给 ResourceManager 或 Scheduler- 应用程序可以是一个job作业或者一组job作业的有向无环图(DAG)
随着发展,YARN 不仅仅是 Hadoop 的资源调度框架,还成为一个通用的资源调度管理器,可以将各种各样的计算框架通过 YARN 管理起来,比如 Strom、Spark 等
https://blog.csdn.net/liuxinghao/article/details/74939382 https://matt33.com/2018/09/01/yarn-architecture-learn/
https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ https://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/index.html