hadoop的核心就是hdfs和mapreduce ,两者只是理论基础,不是具体可使用的高级应用,hadoop下面有很多经典的子项目,比如hbase,hive等,这些都是基于hdfs和mapreduce发展出来的。
hdfs(hadoop distributed file system,hadoop分布式文件系统),他是一个高度容错性的系统,适合部署在廉价的机器上,hdfs能提供高吞吐量的数据访问,适合那些有着超大数据集的应用程序。
hdfs关键元素有:
block:将一个文件进行分块。128m
nameNode:保存整个文件系统的目录信息,文件信息及分块信息,
dataNOde:分布在廉价的计算机上,用于存储block块文件。
mapreduce:
通俗说mapreduce是一套从海量的数据提取分析元素最后返回结果的编程模型,将文件分布式存储在硬盘是第一步,从海量数据中提取分析我们需要的内容就是mapreduce做的是了,
hadoop common:hadoop体系最低成的模块,为hadoop哥哥项目提供各种工具,如配置文件和日志操作。
hdfs:分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,hdfs就像一个传统的分级文件系统,可以创建,删除,移动或者重命名文件,等等,但是hdfs的架构是基于一组特定的节点构建的,这是由他自身的特点决定的,这些节点报矿namenode,他在hdfs内容提供元数据服务,datanode,为hdfs提供存储块。
存储在hdfs中的文件被分成块,然后将这些块赋值到多个计算机中,datanode,这与传统raid架构大不相同,块的大小和复制的快的数量在创建文件时由客户机决定,namenode可以控制所有文件操作,hdfs内部的所有通信头基于标准tcp ip协议。
hadoop 家族中不包括flume sqoop mahout
hdfp学习:
namenode 保存元数据,启动时加载到内存中,工作时都是读取内存中的元数据,当然磁盘也有保存,并且保存,保存文件 block,datanode的映射关系。
分布式计算就是移动计算不移动数据
一个切片 对应一个map 怎么去切片 切片是程序控制 mpareduce 输入 输出都是键值对形式
hadoop生态关键词:
hdfs mapreduce hbase hive pig zookeeper mahout avro sqoop flume storm spark。
下面是个简单的mapreduce程序。
public class wordcount(){
//首先 map用来读取数据 进入下个环节
public static class tokenizerMapper extends Map<Object,text,text,IntWritable>{
private final static IntWritable one=new IntWritable();
private Text word=new Text();
pubilc void map(){
Object key,Text value,Context context{
Stringtokenizer itr=new String tokenize(value.toString));
while(itr.hasMoretoken){
context.write(word,onte);
}
}
}
//其次reduce用来对读取的数据进行一些简单的处理操作
public static class IntSumReducer extends Reducer<Tet,IntWritable,Text,IntWritable>
private IntWritable result=new IntWritable();
public void reduce Text key,Iterable<IntWritable>
values,context context
}
int sum=0;
for(IntWritable val:values){
result.set(sum);
context.write(key,result);
}
//一般主函数都是用来运行job
public static void Main(){
Configuration conf=new Configuration();
Job jo=JOb.getInstance(conf,"word count");
}
}