Hadoop能解决的问题:
1.海量数据需要及时分析和处理。
2.海量数据需要深入分析和挖掘。
3.数据需要长期保存。
问题:
1.磁盘IO成为一种瓶颈,而不是CPU资源。
2.网络带宽是一种稀缺资源。
3.硬件故障成为影响稳定的一大因素。
Hadoop介绍:
1.作者:Doug Cutting
2.用Java编写的开源系统,能够部署在大规模的计算平台上,从而提高计算效率。
3.原来是Nutch搜索引擎里面的一个模块。
4.受Google三篇论文的启发:MapReduce GFS Bigtable。
5.Google 与 Hadoop的对比:mapreduce(mapreduce)、GFS(HDFS)、Bigtable(Hbase)。
Hadoop生态系统:
1.Hbase:
(1) Nosql数据库, Key-Value存储。
(2) 最大化利用内存。
2.HDFS:
(1) Hadoop Distribute File System 分布式文件系统
(2) 最大化利用磁盘。
3.MapReduce:
(1) 编程模型,主要用来做数据的分析。
(2) 最大化利用CPU。
4.Zoo Keeper:
(1) 分布式的服务框架,主要解决分布式集群中应用系统的一致性问题。
(2) 相当于各个节点的通讯协调工具。
5.Pig:
(1) 轻量级语言,易于编程。
(2) 用户与MapReduce之间的转换器。
6.Hive:
(1) 相当于sql语言到MapReduce的转换器,方便数据库工程师编写程序。
(2) 适合数据仓库的统计分析,最适合在基于大量不可变数据的批处理作业。
(3) 不适合用于联机事务处理,不是所有的sql语言都支持,不提供实时查询功能。
7.Chukwa:
(1) 一个开源的用于监控大型分布式系统的数据收集工具,用来将数据源的数据定时的收集起来。
---------------------------------------------------------------------------------------------------------------------------------
HDFS:
HDFS设计原则:
1.文件以块(block)方式存储。
2.每个块大小远比多数文件系统来的大(默认64MB)。
3.通过副本机制提高可靠度和读取吞吐量。
4.每个区至少分到三台DataNode上。
5.单一 master(NameNode) 来协调存储元数据(metadata)。
6.客户端对文件没有缓存机制(No data caching)。
NameNode(Master):
1.HDFS的守护程序。
2.记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上。
3.对内存和I/O进行集中管理。
4.是个单点,发生故障将使集群崩溃。
Secondary Namenode:
1.监控HDFS状态的辅助后台程序。
2.每个集群都有一个。
3.与NameNode进行通讯,定期保存HDFS元数据快照。
4.当NameNode故障时可以作为备用的NameNode使用(还未实现自动切换)。
DataNode(Slave):
1.每台从服务器都运行一个DataNode。
2.负责把HDFS数据块读写到本地文件系统。
JobTracker(MapReduce后台进程):
1.用于处理作业(用户提交代码)的后台程序。
2.决定有哪些文件参与处理,然后切割task并分配节点。
3.监控task,重启失败的task(在不同的节点重启)。
4.每个集群只有唯一一个JobTracker,位于Master节点。
TaskTracker(MapReduce后台进程):
1.位于Slave节点上,与DataNode结合(代码与数据一起的原则)。
2.管理各自节点上的task(由JobTracker分配)。
3.每个节点只有一个TaskTracter,但一个TaskTracker可以启动多个JVM,用于并行执行Map或Reduce任务。
4.与JobTracker交互。