什么是hadoop?
hadoop 是一个可编程和运行分布式应用,用来处理大数据的开源框架。
Hadoop主要子项目
Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
HDFS: Hadoop 分布式文件系统 (Distributed File System) - HDFS (Hadoop Distributed File System)
MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目)
Hive:数据仓库工具,由Facebook贡献。
Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
和其他分布式架构比较:
SETI@home(就是寻找外星人那个):是将数据传送到要计算的地方(运行屏保的计算机),经过计算,再将计算结果传回到数据中心。
hadoop的做法:将代码向数据所在的地方迁移。
和普通的数据库比较:
1.处理的对象不一样。
传统数据库处理的是 结构化的数据,如 表的结构都是固定的。结构化查询语言(Structured Query Language)简称SQL.
hadoop更多的是处理半结构化的数据或者非结构化的数据,如分析日志记录,统计字符出现的次数等等。
2.拓展方式不一样
hadoop的拓展是向外拓展,即需要扩容的时候,增加普通的机器。
普通数据库拓展是向高拓展,即更换更好的机器。(当然也可以向外拓展,这点有待讨论...)
3.hadoop用键值对代替数据表
传统数据库是让数据以某种模式存放在具有关系数据库的模式中。基于这种模式来对数据进行处理。hadoop将数据转化为键/值对来进行处理
4.hadoop用函数式编程(MapReduce)代替sql
5.hadoop用离线批量处理代替在线处理(hadoop为离线处理和大规模数据分析而设计,
更适合于 一次写入,多次读取 的情况,类似于sql的数据仓库)
==============================================================
我也是刚开始学习hadoop,学习的资料来自于 《hadoop实战》和《hadoop权威指南》 以及网上搜到的一些资料。
这些笔记是学习的过程中自己积累的,然后用更加浅显的话表述出来,希望也能帮助到初学者。