1. 场景:
现在人产生数据越来越快,机器则更快,所以需要另外的一种处理数据的方法。
硬盘容量增加,但是性能没跟上,解决办法是将数据分到多块硬盘,然后同时读取。
问题:
硬件问题 -- 复制数据 解决(RAID)
分析需要从不同的硬盘读取的数据: MapReduce
Hadoop:
1) 可靠的共享存储(分布式存储)
2) 抽象的分析接口(分布式分析)
2. 大数据
-- 可以理解为不能使用一台机器处理的数据
大数据的核心是样本 = 总体
特性: 大量性 快速性 多样性 易变性 准确性 复杂性
关键技术:
1) 数据分布在多台机器
-- 可靠性: 每个数据块都复制到多个节点
性能: 多个节点同时处理数据
2) 计算随数据走
网络IO速度<<本地磁盘速度,大数据系统会尽量地将任务分配到离数据最近的机器上运行
(程序运行时,将程序及其依赖包都复制到数据所在的机器运行)
代码向数据迁移,避免大规模数据时,造成大量数据迁移的情况,尽量让一段数据的计算发生在同一台机器上
3) 串行IO取代随机IO
传输时间<<寻道时间,一般数据写入后不再修改
** 大数据主要解决的是数据比较多,所以存放到多台机器上,那么需要关注数据存储的问题,以及数据的安全保障,还有数据的计算问题,计算的性能;
3. Hadoop
Hadoop高容错、高可靠性、高扩展性,特别适合写一次,读多次的场景。
适合:
大规模数据
流式数据(写一次,读多次)
商用硬件(一般硬件)
不适合:
低延迟的数据访问
大量的小文件
频繁修改文件(基本就是写1次)
** 4. Hadoop架构
HDFS: 分布式文件存储
YARN:分布式资源管理
MapReduce:分布式计算
Others:利用YARN的资源管理功能实现其他的数据处理方式
内部各个节点基本都是采用Master-Woker架构