分布式系统与Hadoop:代码向数据迁移的理念
SQL数据库与Hadpoop:(1)文件,图片不适合关系型数据库模型,大型数据集往往是半结构化的,使用键值对作为基本数据单元
(2)MapReduce代替原来的SQL (3)适合一次写入多次读取的数据存储需求
MapReduce:Mapper, Reducer,一旦MapReduce应用程序写好了,可以极易扩展至几千台机器
Map的输入为一个List(<K1,V1>),如处理多个文件的输入为List(<String file_ name, String file_content>), 在mapper的map函数对将每个<K1,V1>键值进行拆分,K1经常备忽略,将原来的<K1,V1>转换并放入<K2,V2>键值对的列表,如对于单词统计map将List(<String file_ name, String file_content>)转为List(<String word, interger num>).
接着将Map的输出一个巨大的List(K2,V2),根据相同Key的原则又被组织成新的键值对<K2,List(V2)>, Reducer将处理聚合后的每一个<K2,List(V2)>输出List(<K3,V3>)
用Java写的Hadoop应用程序被打包成一个jar进行执行,比如bin/hadoop jar <jarName>