买了一本书《Hadoop权威指南》第二版,书写的真不错,就是思维跳跃性太大,看了没两章,是前后狂翻(没办法,他一说就是看附录A安装Hadoop,看附录C准备NCDC天气数据)

附录A需要研究一下,根据自己的需求确定下来,学习阶段也就本地模式就够了,不要玩什么集群模式,浪费感情,浪费计算机资源。具体过程上网搜搜吧,好多人写,不过你需要的就是最基本的模式,只要安装Java、解压缩Hadoop,配置hadoop的bin目录到path环境变量。就可以了。集群了之类的,不要玩那些没用的,入门以后再说。我相信你30分钟都能搞好一个liunx系统,并安装jdk、解压缩hadoop,配置JAVA_HOME,和path环境变量。

 

附录C:准备NCDC天气数据,这一章节巨崩溃,看了两天(全是下班后的业余时间)也就从它所描述的NCDC官网上下载到了我需要的测试数据,好多,看了半天本来就是测试,随便找两个温度测试站点的2年的数据合并一下作为测试数据算了。

得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意得意

下面开始我对前两章的理解,希望给后来者能通过一晚上的时间,快速学习会第二章节的内容。

1.      准备工作(30分钟)

1)     科普HDFS基础命令

1,查看目录(列表)信息

#bin/hadoop dfs -ls /

 

2,创建目录test

#bin/hadoop dfs -mkdir test

 

3,删除目录test

#bin/hadoop dfs -rmr test

 

4,上传文件到HDFS目录

#bin/haddop dfs -put *.txt test

 

5,下载文件

#bin/hadoop dfs -get test test1

 

6. 查看一个文件

#bin/hadoop dfs –tail test

#bin/hadoop dfs –cat test

 

2)     准备天气预报数据

打开FTP

ftp://ftp.ncdc.noaa.gov/pub/data/gsod/

随意下两个年份的文件进行分析。

2011/007018-99999-2011.op.gz

2010/999999-94645-2012.op.gz

上传这两个gz文件到Linux服务器上,解压缩gz文件,执行命令合并两个临时文件

cat  007018-99999-2011.op 999999-94645-2012.op> ncdc-all.op

将合并后的温度文件,上传到hdfs上,等待分析备用。

hadoop dfs -put  ncdc-all.op  ./hdfs/temperature

2.      编写Map-Reduce函数和调度函数(Job)(60分钟)

    多看看代码吧,没坏处。详见附件。附件没法上传,等我上传到资源里面吧。

http://download.csdn.net/detail/xzknet/4905094

哦,对了,附件密码忘记说了,和文件名称一样。哈哈

3.      上传Jar包到Linux服务器。(30分钟)

将第二步编写的代码打包成HadoopTest.jar放到本地某一个目录下,例如:

/home/xzknet/demo/ch02/

   然后进入该目录执行如下命令

hadoop jar ./ch02.jar /home/xzknet/demo/ch02/hdfs output

   系统返回如下信息

xzknet@bogon:~/demo/ch02$hadoop jar ./ch02.jar /home/xzknet/demo/ch02/hdfs output

12/12/1807:35:48 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker,sessionId=

12/12/1807:35:48 WARN mapred.JobClient: Use GenericOptionsParser for parsing thearguments. Applications should implement Tool for the same.

12/12/1807:35:48 INFO mapred.FileInputFormat: Total input paths to process : 1

12/12/1807:35:48 INFO mapred.JobClient: Running job: job_local_0001

12/12/1807:35:48 INFO mapred.FileInputFormat: Total input paths to process : 1

12/12/1807:35:48 INFO mapred.MapTask: numReduceTasks: 1

12/12/1807:35:48 INFO mapred.MapTask: io.sort.mb = 100

12/12/1807:35:48 INFO mapred.MapTask: data buffer = 79691776/99614720

12/12/1807:35:48 INFO mapred.MapTask: record buffer = 262144/327680

12/12/1807:35:48 INFO mapred.MapTask: Starting flush of map output

12/12/1807:35:49 INFO mapred.MapTask: Finished spill 0

12/12/1807:35:49 INFO mapred.TaskRunner: Task:attempt_local_0001_m_000000_0 is done.And is in the process of commiting

12/12/1807:35:49 INFO mapred.LocalJobRunner:file:/home/xzknet/demo/ch02/hdfs/temperature:0+99802

12/12/1807:35:49 INFO mapred.TaskRunner: Task 'attempt_local_0001_m_000000_0' done.

12/12/1807:35:49 INFO mapred.LocalJobRunner:

12/12/1807:35:49 INFO mapred.Merger: Merging 1 sorted segments

12/12/1807:35:49 INFO mapred.Merger: Down to the last merge-pass, with 1 segments leftof total size: 7878 bytes

12/12/1807:35:49 INFO mapred.LocalJobRunner:

12/12/1807:35:49 INFO mapred.TaskRunner: Task:attempt_local_0001_r_000000_0 is done.And is in the process of commiting

12/12/1807:35:49 INFO mapred.LocalJobRunner:

12/12/1807:35:49 INFO mapred.TaskRunner: Task attempt_local_0001_r_000000_0 is allowedto commit now

12/12/1807:35:49 INFO mapred.FileOutputCommitter: Saved output of task'attempt_local_0001_r_000000_0' to file:/home/xzknet/demo/ch02/output

12/12/1807:35:49 INFO mapred.LocalJobRunner: reduce > reduce

12/12/1807:35:49 INFO mapred.TaskRunner: Task 'attempt_local_0001_r_000000_0' done.

12/12/1807:35:49 INFO mapred.JobClient:  map 100%reduce 100%

12/12/1807:35:49 INFO mapred.JobClient: Job complete: job_local_0001

12/12/1807:35:49 INFO mapred.JobClient: Counters: 13

12/12/1807:35:49 INFO mapred.JobClient:  FileSystemCounters

12/12/1807:35:49 INFO mapred.JobClient:    FILE_BYTES_READ=244318

12/12/1807:35:49 INFO mapred.JobClient:    FILE_BYTES_WRITTEN=78028

12/12/1807:35:49 INFO mapred.JobClient:  Map-Reduce Framework

12/12/1807:35:49 INFO mapred.JobClient:    Reduce input groups=2

12/12/1807:35:49 INFO mapred.JobClient:    Combine output records=0

12/12/1807:35:49 INFO mapred.JobClient:     Mapinput records=718

12/12/1807:35:49 INFO mapred.JobClient:    Reduce shuffle bytes=0

12/12/1807:35:49 INFO mapred.JobClient:    Reduce output records=2

12/12/1807:35:49 INFO mapred.JobClient:    Spilled Records=1432

12/12/1807:35:49 INFO mapred.JobClient:     Mapoutput bytes=6444

12/12/1807:35:49 INFO mapred.JobClient:     Mapinput bytes=99802

12/12/1807:35:49 INFO mapred.JobClient:    Combine input records=0

12/12/1807:35:49 INFO mapred.JobClient:     Mapoutput records=716

12/12/1807:35:49 INFO mapred.JobClient:    Reduce input records=716

然后查看当前目录,生成output目录,打开此目录,可以看到生成结果文件,我们会看到此目录包含crc文件,是一个HDFS文件夹。

我们可以直接打开此结果文件,我们即可以看到两年的最高气温

xzknet@bogon:~/demo/ch02$ls

ch02.jar  hdfs ncdc-all.op  output

xzknet@bogon:~/demo/ch02$cd output

xzknet@bogon:~/demo/ch02/output$ls

part-00000

xzknet@bogon:~/demo/ch02/output$ls

part-00000

xzknet@bogon:~/demo/ch02/output$tail part-00000

2010    85.4

2012    73.7

   注意:eclipse的导出Jar包时,export选项中有MainClass选项,注意设置该选项,否则:运行hadoop jar 命令时在***.jar后面需要指定包括包路径的mainclass类名.

 

 跟书上的命令不大一样,不过他那里是指的local的方式,

这里ch02.jar在本地,要分析的数据文件temperature 在hdfs上,产生的输出在hdfs上,output是一个文件夹

xzknet@bogon:~/demo/ch02$ hadoop dfs -cat ./output/part-00000

2010    85.4

2012    73.7

xzknet@bogon:~/demo/ch02$ hadoop dfs -tail ./output/part-00000

2010    85.4

2012    73.7

到这里,恭喜你,你已经入门了。并用Hadoop开发了自己第一个云计算程序。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐