Hadoop入门经典

开发 架构 Hadoop
Hadoop你是否了解,还有它是如何运行的呢,本文向大家介绍Hadoop入门的内容,希望通过本文的介绍大家能够轻松掌握Hadoop的一些基础知识。

本节接着上节继续向大家介绍一下Hadoop入门方面的知识,主要内容有如何运行Hadoop程序和它的效率问题,欢迎大家一起来学习Hadoop入门,首先我们先看一下Hadoop的概念。

Hadoop简介

Hadoop一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
  简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
  Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。

一、运行Hadoop程序
Hadoop入门首先看一下如何运行Hadoop程序。Hadoop这方面的文档写得不全面,综合参考GettingStartedWithHadoop与NutchHadoopTutorial两篇后,再碰了很多钉子才终于完整的跑起来了,记录如下:

1.1local运行模式

完全不进行任何分布式计算,不动用任何namenode,datanode的做法,适合一开始做调试代码。
解压hadoop,其中conf目录是配置目录,hadoop的配置文件在hadoop-default.xml,如果要修改配置,不是直接修改该文件,而是修改hadoop-site.xml,将该属性在hadoop-site.xml里重新赋值。
hadoop-default.xml的默认配置已经是local运行,不用任何修改,配置目录里唯一必须修改的是hadoop-env.sh里JAVA_HOME的位置。
将编译好的HadoopGrep与RegMapper.class放入hadoop/build/classes/demo/hadoop/目录找一个比较大的log文件放入一个目录,然后运行hadoop/bin/hadoopdemo.hadoop.HadoopGreplog文件所在目录任意的输出目录grep的字符串。查看输出目录的结果,查看hadoop/logs/里的运行日志。在重新运行前,先删掉输出目录。我们看一下Hadoop入门中运行Hadoop程序的第二种模式。


1.2单机集群运行模式

现在来搞一下只有单机的集群.假设以完成3.1中的设置,本机名为hadoopserver

第1步.然后修改hadoop-site.xml,加入如下内容: 

  1. <property> 
  2. <name>fs.default.name</name> 
  3. <value>hadoopserver:9000</value> 
  4. </property> 
  5. <property> 
  6. <name>mapred.job.tracker</name> 
  7. <value>hadoopserver:9001</value> 
  8. </property> 
  9. <property> 
  10. <name>dfs.replication</name> 
  11. <value>1</value> 
  12. </property> 

从此就将运行从local文件系统转向了hadoop的hdfs系统,mapreduce的jobtracker也从local的进程内操作变成了分布式的任务系统,9000,9001两个端口号是随便选择的两个空余端口号。
另外,如果你的/tmp目录不够大,可能还要修改hadoop.tmp.dir属性。

第2步.增加ssh不输入密码即可登陆。
因为Hadoop需要不用输入密码的ssh来进行调度,在不su的状态下,在自己的home目录运行ssh-keygen-trsa,然后一路回车生成密钥,再进入.ssh目录,cpid_rsa.pubauthorized_keys
详细可以man一下ssh,此时执行sshhadoopserver,不需要输入任何密码就能进入了。

3.格式化namenode,执行
bin/hadoopnamenode-format

4.启动Hadoop
执行hadoop/bin/start-all.sh,在本机启动namenode,datanode,jobtracker,tasktracker

5.现在将待查找的log文件放入hdfs,。
执行hadoop/bin/hadoopdfs可以看到它所支持的文件操作指令。
执行hadoop/bin/hadoopdfsputlog文件所在目录in,则log文件目录已放入hdfs的/user/user-name/in目录中

6.现在来执行Grep操作
hadoop/bin/hadoopdemo.hadoop.HadoopGrepinout
查看hadoop/logs/里的运行日志,重新执行前。运行hadoop/bin/hadoopdfsrmrout删除out目录。

7.运行hadoop/bin/stop-all.sh结束。单机集群运行模式介绍完毕,我们看一下Hadoop入门中运行Hadoop程序的第三种集群运行模式。

1.3集群运行模式
假设已执行完3.2的配置,假设第2台机器名是hadoopserver2

1.创建与hadoopserver同样的执行用户,将hadoop解压到相同的目录。

2.同样的修改haoop-env.sh中的JAVA_HOME及修改与3.2同样的hadoop-site.xml

3.将hadoopserver中的/home/username/.ssh/authorized_keys复制到hadoopserver2,保证hadoopserver可以无需密码登陆hadoopserver2
scp/home/username/.ssh/authorized_keysusername@hadoopserver2:/home/username/.ssh/authorized_keys

4.修改hadoop-server的hadoop/conf/slaves文件,增加集群的节点,将localhost改为
hadoop-server
hadoop-server2

5.在hadoop-server执行hadoop/bin/start-all.sh
将会在hadoop-server启动namenode,datanode,jobtracker,tasktracker
在hadoop-server2启动datanode和tasktracker

6.现在来执行Grep操作
hadoop/bin/hadoopdemo.hadoop.HadoopGrepinout
重新执行前,运行hadoop/bin/hadoopdfsrmrout删除out目录

7.运行hadoop/bin/stop-all.sh结束。


二、效率
经测试,Hadoop并不是万用灵丹,很取决于文件的大小和数量,处理的复杂度以及群集机器的数量,相连的带宽,当以上四者并不大时,hadoop优势并不明显。
比如,不用hadoop用java写的简单grep函数处理100M的log文件只要4秒,用了hadooplocal的方式运行是14秒,用了hadoop单机集群的方式是30秒,用双机集群10M网口的话更慢,慢到不好意思说出来的地步。本节关于Hadoop入门方面的内容就介绍到这里。

【编辑推荐】

  1. Hadoop起源及其四大特性详解
  2. Hadoop开源已经实现
  3. Hadoop集群与Hadoop性能优化
  4. Hadoop 从Yahoo向Google的技术转折
  5. Yahoo公布Hadoop的源代码
责任编辑:佚名 来源: csdn.net
相关推荐

2010-05-27 17:17:37

Subversion入

2010-06-07 17:24:44

UML

2010-06-03 10:22:17

Hadoop入门

2010-06-11 14:42:01

IS-IS路由协议

2010-08-06 09:06:26

FlexBuilder

2010-05-21 12:50:45

Subversion快

2010-08-16 16:17:21

2010-08-04 09:51:05

Flex学习

2018-07-11 13:33:43

大数据人工智能Hadoop

2016-12-02 19:19:35

大数据Hadoop

2012-06-07 15:02:42

惠普激光打印机

2010-06-04 17:21:48

2021-07-29 09:55:59

鸿蒙HarmonyOS应用

2021-07-27 11:39:40

鸿蒙HarmonyOS应用

2022-09-27 12:00:58

HadoopK8S开源

2019-11-05 09:35:26

HDFSHadoopRAID

2013-10-15 10:18:17

2013-10-15 10:24:23

hadoop大数据

2016-12-20 18:21:29

Hadoop大数据面试

2010-05-24 14:59:29

Hadoop集群
点赞
收藏

51CTO技术栈公众号