hadoop前生今世

hadoop最初由yahoo和google共同提出。
他们想对自己的搜索数据进行理解,从而产生更多的商业价值和决策。

  • 分布式
  • 容错性
    如果一个节点产生错误或者退出计算,hadoop会把该节点任务分配给其他节点并继续运行。
  • 实时性

生态系统

最关键的有以下两个
- HDFS
- MapReduce

此外,hadoop最常用的组件如下图:

hadoop Hive HDFS 关系图 hdfs hbase hive spark 关系_HDFS


其中

  • hbase:列存储
  • Sqoop:负责数据交换
  • Hive: 管理SQL查询
  • Pig:运行脚本

HDFS

HDFS是一个分布式文件系统。分布式文件系统就是基于主从结构的,存储与链接文件的方法。文件存储在一个或多个中心服务器上,如果授权信息正确,文件就可以被任何一个客户端访问。
伟哥在这里个大家详细的介绍一下HDFS的原理,因为其他分布式存储系统的原理也类似,所以你可以触类旁通,明白了,就可以忽悠别人啊!

  • HDFS是基于集群设计的
    一个集群就是一些相连的节点。每个集群都有一个唯一的Namenode主服务器和若干个附属的Datanode . Namenode存放了所以文件目录。
  • HDFS工作方式
    讲文件分成若干小块,并将这些小块分布式地存储在HDFS集群的各个数据节点中,并由Namenode统一管理。当datanode实施文件读写的时候,namenode实现文件的打开,关闭,重命名等操作。
    伟哥想提醒一点:Namenode本身是不存储数据的,它的职责是管理文件。就好比顺丰快递的仓库管理员,他本身不负责快递,他只是把包裹有效的分派给每个快递员。
  • 机架(rack)
    HDFS中,所有的数据节点datanode都被收集到机架中(类似快递员的三轮车),机架即某一地点datanode的存储位置。Namenode是有一个rack ID来追踪集群中的所有datanode,从而组成一个完整的文件。

为什么用HDFS管理大文件

通过把大文件分成小块进行管理,可以做到:

  • HDFS是可恢复的。

数据块可以在整个集群中进行复制,保证了在服务器出错时,数据不被破坏(因为我是一个集群,不可能同时坏)。

  • HDFS只允许文件写入一次

以后就只能读取,保证了文件不被篡改。

  • Datanode和namenode结合的好处

数据安全,数据复制,数据可靠,数据恢复。
在一个服务器出错或不可用时,客户端可以得到其最近的一份拷贝,使得系统可以畅通无阻的运行。是不是很爽?

  • 举个例子吧,

有一个文件,存储真个北京市码农的通信录,因为该文件包含大量数据,因此它被存储在一个HDFS集群中。联系人中以A开通的存放在Server1,B存放在server2,以此类推……

这时候,一个公司要挖人,做了一个程序从各个服务器把这些文件块收集起来重建原始的电话本,如果一个或多个服务器没响应,HDFS默认从两个服务器中复制文件块,以获取必要的数据。这样的数据冗余机制提供了较高的可靠性,这种冗余根据文件的重要性可能增加或减少!

伟哥考考你

本节课结束你了,是不是学习的很愉悦?可以考虑约个妹子去bar放松一下。
问题:datanode都被存放在一个叫__什么的设备中?

Answer is机架(rack)