1.大数据的4V:大、快、多、真
2.Hadoop基本组件
(1)HDFS分布式文件系统:程序员使用处理大数据集
(2)YARN资源调度框架:集群节点的调度工作
(3)MapReduce分布式处理框架:分布式读写数据
3.HDFS的目标
(1)硬件容错:检测硬件错误并从有问题的硬件快速自动恢复
(2)流式数据访问:对数据边读取边处理,而不是将整个数据集读取完后再处理
(3)支持大数据集
(4)简单的一致性模型:文件是一次写多次读模式,文件一旦被创建,对该文件只能执行尾部追加或彻底清除操作
(5)移动计算而不是移动数据:将计算移动到临近数据的位置,比把数据移动到应用运行的位置要好
(6)便捷访问异构的软硬件平台:HDFS能轻松从一个平台迁移到另一个平台
4.HDFS架构
一个HDFS集群有一个NameNode进程,它负责管理文件系统的命名空间,运行NameNode进程的节点是HDFS的主节点。除NameNode外的每个节点都运行一个DataNode进程,它管理所在节点上的存储,运行DataNode进程的节点是HDFS的从节点,又称工作节点。
在系统内部,一个文件被分为多个数据块,这些数据块实际被存储到DataNode所在节点上,用户数据永远不会存储到主节点NameNode上。
HDFS典型的部署是一台专用服务器作为主节点,只运行NameNode进程,集群中的其他机器作为从节点,每个上面运行一个DataNode进程,一台主机上不能同时运行多个DataNode进程。
命名空间及其属性的任何变化都被NameNode所记录,HDFS文件的副本数被称为该文件的复制因子,这个信息被NameNode存储。
5.数据复制
HDFS将文件分解成一个由数据块构成的序列,每个数据块有多个副本,这种数据冗余对容错非常关键。
当用户重新配置了文件的块大小,然后向该文件中追加数据,这时HDFS不会填充文件的最后一个快,而是用新的尺寸创建新块存储追加的数据,这种情况下文件中就会同时存在两种大小的块。除了追加和清除操作外,HDFS中的文件在任何时候都是严格的一次写入。
位于不同机架上的两个节点通过网络交换机进行通信,同一个机架上机器间的网络带宽会高于不同机架上的机器。
在一个复制因子为3的普通场景中,HDFS把数据块的第一个副本放置在本地机架的一个节点上,另一个副本放置在本地机架的另外一个节点上,最后一个副本放置在另外一个机架的节点上。这样只写了两个机架,节省了一个机架的写入流量,提升了写入性能,机架失效的可能性比机器失效的可能性小得多,因此这种策略并不会影响数据的可靠性和可用性。
使用这种策略,一个文件的副本不是平均分布于所有机架,三分之一在同一个节点,三分之二在同一个机架,剩下的三分之一分布在其它机架上。
如果复制因子大于3,第4个及其后面的副本被随机放置,但每个机架的副本数量要低于上限值,上限值的计算公式是:((副本数-1)/(机架数+2))取整。
为了使全局的带宽消耗和读延迟降到最小,在选择副本时,HDFS总是选择距离读请求最近的存储节点。



