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。
---------------------------------------------------------------------------------------------------------------------------------
HDFS:
HDFS设计原则:
1.文件以块(block)方式存储。
2.每个块大小远比多数文件系统来的大(默认64MB)。
3.通过副本机制提高可靠度和读取吞吐量。
4.每个区至少分到三台DataNode上。
5.单一 master(NameNode) 来协调存储元数据(metadata)。
6.客户端对文件没有缓存机制(No data caching)。
%26nbsp; 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数据块读写到本地文件系统。
%26nbsp;
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交互。