《hadoop学习之路》————1. Hadoop 介绍

  我学习Hadoop有一段时间了,但是一直都没有整理成博客,散漫的写了一些东西,现在开始有条例的整理一下我的hadoop学习之路


        Hadoop是一个分布式的数据库,可以方便的解决大数据的的问题,由三个部分组成:MapReduce,HDFS,HBase。Hadoop最开始的想法是来自google公司,主要来自google发布的三篇论文03年的《The Google File System》和《MapReduce: Simplied Data Processing on Large Clusters》,还有08年的《BigTable: A Distributed Storage System for Structured Data》, 本来这些技术都是Google公司使用的技术,因为Google最为全国最大的搜索公司,每天都要面对海量的数据,同时还要快速的搜索出用户需要的结果。如果Google不出这三篇paper的话,估计这两项技术很难被其他的实现,外界的大牛可以实现这样的代码,但是不知道这样的方法真的可以用很廉价的商业电脑解决Big Data的问题,而不需要不断的花钱买大型的服务器。后来Google实现了这个算法,并且发表出来

          因为Google公司是一家很神秘的公司,很多人不知道Google的搜索引擎的的技术是什么样子的,也不知道Google广告是如何赚钱的。通过这三篇文章让人们了解了更多。《The Google File System》主要讲的是适用于大数据的文件存储方式,大数据的分布式文件存储更适合读取,而不是写操作。已经将上百T的数据成功部署在上千台机器上,并且支持上百的用户同时访问。《MapReduce: Simplied Data Processing on Large Clusters》讲述的是MapReduce架构这个hadoop中最核心的架构,负责处理整个的计算。《BigTable: A Distributed Storage System for Structured Data》讲述的是分布式的结构化数据存储系统,用来处理海量数据

        MapReduce是一种编程模型,主要是由Map和Reduce两个函数构成,最简单应用就是WordCount,我最开始学习Hadoop就是调试和运行这个程序。

        对于Hadoop我现在只是熟悉WordCount的程度,主要包括,Map和Reduce函数的编写,还有Combiner函数,还有在map和Reduce函数发生之前的setup和之后的cleanup函数。还有自定义数据类型可以成为类似LongWritable这样的数据类型

还有Job的通用书写方式

Job basicJob = new Job(conf,"Temporal Basic Similarity Join");
		basicJob.setJarByClass(TemporalSimilarityJoin.class);
		
		basicJob.setMapperClass(TemporalJoinMapper.class);
//		basicJob.setCombinerClass(TemporalJoinReducer.class);
		
		basicJob.setReducerClass(TemporalJoinReducer.class);
		
		basicJob.setMapOutputKeyClass(LongWritable.class);
		basicJob.setMapOutputValueClass(FlickrValue.class);
		
//		basicJob.setOutputKeyClass(Text.class);
//		basicJob.setOutputValueClass(Text.class);
		basicJob.setNumReduceTasks(6);
		
		FileInputFormat.addInputPath(basicJob, new Path(FlickrSimilarityUtil.flickrInputPath));
		FileOutputFormat.setOutputPath(basicJob, new Path(FlickrSimilarityUtil.flickrOutputPath));
		
		if(basicJob.waitForCompletion(true))
			return true;
		else
			return false;


对于编程的细节把握的不足,但是可以继续学习,这边文章是我在接触hadoop二年之后写下来的,现在我才发现自己对于这个Hadoop的架构非常的不熟悉,这个让我很惭愧

Hadoop框架的核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。Hadoop这个名字不具有什么特别的意思,是Hadoop项目的创建者Doug Cutting根据他孩子给一个棕黄色的大象玩具起的名字而命名的,简单,容易发音,而且大象也代表着大数据。

HDFS分为DataNode和NameNode,在伪分布的情况下,DataNode和NameNode是同一台电脑,而在真实的Cluster中,只有一个NameNode,多个DataNode,现在最高是5000台电脑。现在阿里自己研发了一个类似的系统叫做飞天系统,逐渐代替Hadoop。由于HDFS中主要处理的是多次进行读的数据,所以HDFS易读不易写。

MapReduce里面有Jobtracker和Tasktracker,一个Jobtacker中可以有很多的Tasktracker.

现在有了很多Hadoop的开源子项目,这些项目都发了不错的paper。有Pig,Spark,Hive,Zookeeper,这些东西我会在之后的一段时间一个个的尝试,并且讲解





        

猜你喜欢

转载自blog.csdn.net/wjcquking/article/details/41909119