hadoop

http://download.csdn.net/detail/kl222/5219102 下载word文档

1.        hadoop概述

hadoop包含两个部分:分布式文件系统(HDSF)和Map/Reduce。这两个部分都采用master/slave结构。

 

  对于Hadoop的集群来讲,可以分成两大类角色:MasterSalve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

  从上面的介绍可以看出,HDFSMapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFSMapReduce任务处理过程中提供了文件操作和存储等支持,MapReduceHDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

2.        安装:

2.1.       组成

l  Ubuntu12.04

root@ubuntu:/etc/apt# uname -a

Linux ubuntu 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386 GNU/Linux

l  Jdk

l  hadoop

 

2.2.       JDK安装和配置

2.2.1.      下载运行库

2.2.1.1.      ubuntu下:apt-get install default-jdk

root@ubuntu:/etc/apt# java -version

java version "1.6.0_24"

OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~12.04.1)

OpenJDK Server VM (build 20.0-b12, mixed mode)

2.2.2.      下载oraclejava虚拟机

2.2.2.1.      下载jdk-7-linux-i586.tar.gz

  1. wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz  

可以在oracle官网找到你需要的版本。现在是jdk7java se

http://www.oracle.com/technetwork/indexes/downloads/index.html

2.2.2.2.      解压安装

  1. sudo tar zxvf ./jdk-7-linux-i586.tar.gz  -C /usr/lib/jvm  
  2. cd /usr/lib/jvm  
  3. sudo mv jdk1.7.0/ java-7-sun  

2.2.2.3.      修改环境变量

  1. vim ~/.bashrc  

添加:

 

  1. export JAVA_HOME=/usr/lib/jvm/java-7-sun  
  2. export JRE_HOME=${JAVA_HOME}/jre  
  3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
  4. export PATH=${JAVA_HOME}/bin:$PATH  

保存退出,输入以下命令使之立即生效。

  1. source ~/.bashrc  

2.2.2.4.      配置默认JDK版本

由于Ubuntu中可能会有默认的JDK,如openjdk,所以,为了将我们安装的JDK设置为默认JDK版本,还要进行如下工作。
执行代码:

  1. sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-sun/bin/java 300  
  2. sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-sun/bin/javac 300  

执行代码:

  1. sudo update-alternatives --config java  

系统会列出各种JDK版本,如下所示:

  1. www.linuxidc.com@linux:~$ sudo update-alternatives --config java  
  2. 有 3 个候选项可用于替换 java (提供 /usr/bin/java)。  
  3.   
  4.   
  5.   选择       路径                                    优先级  状态  
  6. ------------------------------------------------------------  
  7. * 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      自动模式  
  8.   1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      手动模式  
  9.   2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        手动模式  
  10.   3            /usr/lib/jvm/java-7-sun/bin/java           300       手动模式  
  11.   
  12.   
  13. 要维持当前值[*]请按回车键,或者键入选择的编号:3  
  14. update-alternatives: 使用 /usr/lib/jvm/java-7-sun/bin/java 来提供 /usr/bin/java (java),于 手动模式 中。  

2.2.2.5.      测试

  1. www.linuxidc.com@linux:~$ java -version  
  2. java version "1.7.0"  
  3. Java(TM) SE Runtime Environment (build 1.7.0-b147)  
  4. Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode) 

2.3.    Hadoop安装和配置

2.3.1.      下载

地址:

http://hadoop.apache.org/releases.html

2.3.2.      安装

安装包有两种型式,一种只有运行行库,另一种除运行库外,还包含有源码的。我们下载包含有源码的发行包。

直接解压到一个指定的目录下就可以了。

 

文档位于安装目录下面的docs目录,docs/cn下包含中文文档。

安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。

通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode作为TaskTracker。这些机器是slaves

我们用HADOOP_HOME指代安装的根路径。通常,集群里的所有机器的HADOOP_HOME路径相同。

 

root@ubuntu:/data# ls

hadoop-1.0.3.tar.gz

root@ubuntu:/data# tar xzvf hadoop-1.0.3.tar.gz

root@ubuntu:/data# ls

hadoop-1.0.3  hadoop-1.0.3.tar.gz

root@ubuntu:/data/hadoop-1.0.3# ls

bin          hadoop-ant-1.0.3.jar          ivy          sbin

build.xml    hadoop-client-1.0.3.jar       ivy.xml      share

c++          hadoop-core-1.0.3.jar         lib          src

CHANGES.txt  hadoop-examples-1.0.3.jar     libexec      webapps

conf         hadoop-minicluster-1.0.3.jar  LICENSE.txt

contrib      hadoop-test-1.0.3.jar         NOTICE.txt

docs         hadoop-tools-1.0.3.jar        README.txt

 

2.3.3.      拓扑

2.3.4.       配置

2.3.4.1.      Master节点配置

Master节点包括 NameNodeJobTracker。由于我们现在是测试,所以把NamenodeJobTracker放到同一台机器上了。而在实际现网布署时,由于master节点是全系统的一个单点,所以需要采用热备方式布署。

Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xmlHadoop-site.xml。由于Hadoop发展迅速,代码量急剧增加,代码开发分为了corehdfsmap/reduce三部分,配置文件也被分成了三个core-site.xmlhdfs-site.xmlmapred-site.xmlcore-site.xmlhdfs-site.xml是站在HDFS角度上配置文件;core-site.xmlmapred-site.xml是站在MapReduce角度上配置文件

 

可以直接src目录下的文件替换

cp src/core/core-default.xml conf/core-site.xml

cp src/hdfs/hdfs-default.xml conf/hdfs-site.xml

cp mapred/mapred-default.xml conf/mapred-site.xml

 

修改core-site.xml中的hadoop.tmp.dir,它是设置HADOOP数据存储的位置。

修改core-site.xml中的fs.default.name,它是设置namenode的位置,其它datanode是通过这个地址来与namenode通信的。

修改hdfs-site.xml中的dfs.name.dir,它是设置hadoop namenode数据存储的位置。默认是依赖core-site.xml中的hadoop.tmp.dir

修改hdfs-site.xml中的dfs.data.dir,它是设置hadoop datanode数据存储的位置。默认是依赖core-site.xml中的hadoop.tmp.dir

修改mapred-site.xml中的mapred.job.tracker,它是设置jobtracker的位置,其它tasktracker是通过这个地址来与jobtracker通信的。

 

参考:配置参考

3.         编译

3.1.        hadoop编译

Hadoop编译时,需要能够上网,编译的时候需要下载很多库和包。如果是通过代理上网,则需要设置代理:

在根目录\build.xml
找到<target name="ivy-download" ...
在这前增加:

<target name= "proxy" >

<property name="proxy.host" value= "代理的ip地址" />

<property name="proxy.port" value= "8080" />

<input message="Please enter proxy username" addproperty= "proxy.user" />

<input message="Please enter proxy password - NOTE: CLEAR TEXT" addproperty= "proxy.pass" />

<setproxy proxyhost="${proxy.host}" proxyport= "${proxy.port}" proxyuser= "${proxy.user}" proxypassword= "${proxy.pass}" />

</target>

修改:增加依赖

<target name="ivy-download"depends= "proxy" description= "To download ivy" unless= "offline" >

<get src="${ivy_repo_url}" dest= "${ivy.jar}" usetimestamp= "true" />

</target>

 

Hadoop编译工具是ant

在根目录下执行:

root@ubuntu:/data/hadoop#ant

就可以了,一般会通过,不会遇到什么错误。

生成在build目录下。

 

3.2.        eclipse编译hadoop

打开eclipse->new->project->java project from existing ant buildfile

会出现下面问题:

 

此问题未解决

 

3.3.        Eclipse插件编译

官方文档:http://wiki.apache.org/hadoop/EclipsePlugIn

源码位于根目录下的src/contrib/eclipse-plugin

 

3.3.1.       安装eclipse,并安装eclipse-jdt

apt-get install eclipse eclipse-jdt

 

如果没有安装,则编译时会出现下面错误:

compile:

     [echo] contrib: eclipse-plugin

    [javac] /data/hadoop-1.0.4/src/contrib/eclipse-plugin/build.xml:61: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

    [javac] Compiling 45 source files to /data/hadoop-1.0.4/build/contrib/eclipse-plugin/classes

    [javac] /data/hadoop-1.0.4/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/HadoopPerspectiveFactory.java:22:软件包 org.eclipse.jdt.ui 不存在

    [javac] import org.eclipse.jdt.ui.JavaUI;

    [javac]                          ^

    [javac] /data/hadoop-1.0.4/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizard.java:25:软件包 org.eclipse.jdt.internal.ui.wizards不存在

    [javac] import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;

[javac]                                           ^

 

3.3.2.       先找到eclipse安装目录:

root@a:/usr/lib/eclipse# ps -ef|grep eclipse

root      5465  5031  5 18:03 ?        00:00:38 /usr/lib/eclipse/eclipse

root      5791  5265  0 18:15 pts/2    00:00:00 grep --color=auto eclipse

root@a:/usr/lib/eclipse# ls

about_files    buildscripts   dropins  eclipse.ini  p2

artifacts.xml  configuration  eclipse  features     plugins

 

3.3.3.       再在src/contrib/eclipse-plugin/build.properties文件中加入:

eclipse.home=/usr/lib/eclipse

 

3.3.4.       src/contrib/build-contrib.xml文件中加入:

<property name="version" value="1.0.4"/>  <--改成与根目录中build.xmlversion相同的值-->

 

3.3.5.       设置代理,如果可以直接访问网络,就不需要这一步:

src/contrib/eclipse-plugin/build.xml文件中加入:

<target name= "proxy" >

<property name="proxy.host" value= "代理IP地址" />

<property name="proxy.port" value= "代理端口" />

<input message="Please enter proxy username" addproperty= "proxy.user" />

<input message="Please enter proxy password - NOTE: CLEAR TEXT" addproperty= "proxy.pass" />

<setproxy proxyhost="${proxy.host}" proxyport= "${proxy.port}" proxyuser= "${proxy.user}" proxypassword= "${proxy.pass}" />

</target>

 

并修改:

<target name="compile" depends="proxy, init, ivy-retrieve-common" unless="skip.contrib">

    <echo message="contrib: ${name}"/>

    <javac

     encoding="${build.encoding}"

     srcdir="${src.dir}"

     includes="**/*.java"

     destdir="${build.classes}"

     debug="${javac.debug}"

     deprecation="${javac.deprecation}">

     <classpath refid="classpath"/>

    </javac>

  </target>

3.3.6.       编译

hadoop解压根目录下执行:

ant

 

编译时,可能会出现下面错误:

BUILD FAILED

/data/hadoop-1.0.4/src/contrib/eclipse-plugin/build.xml:69: Warning: Could not find file /data/hadoop-1.0.4/build/hadoop-core-1.0.4.jar to copy.

提示找不到hadoop-core-1.0.4.jar,那是因为生成的文件名不对,你可以到/data/hadoop-1.0.4/build下,把hadoop-core-XXXXX.jar改成正确的名字。

 

编译成功后,会在 build/contrib/eclipse-plugin下生成 hadoop-eclipse-plugin-1.0.4.jar

3.3.7.       安装

hadoop-eclipse-plugin-1.0.4.jar复制到eclipse安装目录下的plugins目录下。重启eclipse

便可以在 project explorer中看到 DFS Locations

 

使用参考:使用参考

 

4.         测试

4.1.        其中一个节点宕机,查看整个集群的状态。

4.1.1.       查看文件系统状态:bin/hadoop dfsadmin –report

4.1.2.       查看文件分配状态:

4.2.        宕机机器重新恢复,查看是否可以自动加入集群,是否对集群是否有影响

4.2.1.       查看进程是否自动重启:jps

结果:hadoop不会自动重启

4.2.2.       bin/hadoop dfsadmin –report

 

5.         参考:

http://www.cnblogs.com/xia520pi/category/346943.html

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值