云计算
云计算(Cloud Computing)是基于互联网的一种计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其它设备。分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
应用:Google、Amazon 等
Hadoop
起源于Apache Nutch,核心:分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件框架。
数据完整性
保证数据在传输的过程中不损坏,常见的保证数据完整性采用技术:
HDFS
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的 数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。HDFS开始是为开源的apache项目nutch的基础结构而创建,HDFS是Hadoop项目的一部分,而Hadoop又是Lucene的一部分。
Metadata(元数据)
元数据是用来描述数据的数据(Data that describes other data),比如描述一个人提及的“年龄”、“身高”、“相貌”、“性格”等一些信息,就是元数据。
Block(数据块)
NameNode(命名节点)
命名节点可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命令空间、集群配置信息、存储块的复制。命名节点会存储文件系统的Metadata在内存中,这些信息主要包括了文件信息、每一个文件所对应的的文件块信息及每一个文件块在数据节点的信息。
DataNode(数据节点)
数据节点是文件存储的基本单位,它存储 Block 在本地文件系统中,保存了 Block 的Metadata,同时周期性地发送所有存在的 Block 的报告给命名节点。
Block 的副本放置策略
Block 存储
数据损坏处理
Client(客户端)
需要获取分布式文件系统文件的应用程序。
写入文件步骤:
读取文件步骤:
Block 复制文件步骤:
HDFS以透明的方式校验所有写入它的数据,在往HDFS写入文件时,并在默认的设置下,会在读取数据时验证校验和。针对数据的每个io.bytes.per.checksum(在core-site.xml中配置,默认512字节。),都会创建一个单独的校验和(crc校验码)。
数据节点(DataNode)负责在存储数据及其校验和之前验证它们收到的数据。 从客户端和其它数据节点复制过来的数据。客户端写入数据并且将它发送到一个数据节点管线中,在管线的最后一个数据节点验证校验和。
客户端读取数据节点上的数据时,会验证校验和,将其与数据节点上存储的校验和进行对比。每个数据节点维护一个连续的校验和验证日志,因此它知道每个数据块 最后验证的时间。每个数据节点还会在后台线程运行一个DataBlockScanner(数据块检测程序),定期验证存储在数据节点上的所有块,为了防止 物理存储介质中位衰减锁造成的数据损坏。
Hadoop 是 Apache 下的一个项目,由 HDFS、MapReduce、HBase、Hive 和 ZooKeeper 等成员组成。其中,HDFS 和 MapReduce 是两个最基础最重要的成员。
关系型数据库 与 MapRecue 比较
传统关系型数据库 | MapReduce | |
数据大小 | GB | PB |
访问 | 交互式和批处理 | 批处理 |
更新 | 多次读写 | 一次写入多次读取 |
结构 | 静态模式 | 动态模式 |
完整性 | 高 | 低 |
横向扩展 | 非线性 | 线性 |
MapRecude 与 关系型数据库的另一个区别在于:它们所操作的数据集的结构化程度。
Hadoop能解决的问题
问题
Hadoop生态系统介绍
1)Hbase
2)HDFS
3)MapReduce