`
rq2_79
  • 浏览: 240262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop-0.23.0 安装

 
阅读更多

1.tar -zxvf hadoop-0.23.0.tar.gz
2.安装jdk: 
    chmod 755 jdk-6u27-linux-x64-rpm.bin        
    ./jdk-6u27-linux-x64-rpm.bin
3.配置:
    vi hadoop-0.23.0/config/yarn-env.sh
    增加
    export JAVA_HOME=/usr/java/jdk1.6.0_27/
    export HADOOP_DEV_HOME=/opt/hadoop-0.23.0
    export HADOOP_MAPRED_HOME=${HADOOP_DEV_HOME}
    export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
    export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
    export YARN_HOME=${HADOOP_DEV_HOME}
    export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/conf
    export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/conf

4.单机的例子
    mkdir input
    cp conf/*.xml input
    bin/hadoop jar hadoop-mapreduce-examples-0.23.0.jar grep input output ‘conf*’
    cat output/*


5.伪分布式
    Hadoop可以在单节点上以伪分布式模式进行运行,每个hadoop守护进程都作为一个独立java进程运行!
   
    //namenode配置
    vi conf/core-site.xml
   
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
      <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
      </property>
         <property>
         <name>hadoop.tmp.dir</name>
         <value>/tmp/hadoop/hadoop-${user.name}</value>
       </property>
    </configuration>
   
    //分布式文件配置
    vi conf/hdfs-site.xml
   
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
         <property>
             <name>dfs.replication</name>
             <value>1</value>
         </property>
    </configuration>
   
    vi conf/mapred-site.xml
   
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
         <property>
             <name>mapred.job.tracker</name>
             <value>localhost:9001</value>
         </property>
    </configuration>
   
    免密码SSH设置:
    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
   
    增加用户
    useradd hadoop :增加一个用户
    passwd hadoop :给用户加密码
   
    chmod 777 -R /opt/hadoop-0.23.0
   
    su - hadoop
   
    格式化一个新分布式文件系统:
    bin/hadoop namenode -format

    启动hadoop守护进程:
    bin/start-all.sh

    看一下日志 不报错就ok了
   
    http://ip:9999/

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hadoop 0.23.0比先前的0.20版本有了很大的改动,而我目前最感兴趣的还是HDFS部分的federation部分,由于相关配置资料比较少,下面就把这两天配置情况总结一下作为备忘:
要配置hdfs,关键要知道namenode、datanode、secondarynamenode、backupnode都需要什么配置,下面分别来讨论一下:
1、namenode
    1)需要一些目录放置fsimage和edits,对应配置dfs.namenode.name.dir、dfs.namenode.edits.dir
    2)打开两个端口来提供RPC服务,一个是给client对应配置dfs.namenode.rpc-address;一个端口是提供给datanode对应配置dfs.namenode.servicerpc-address,如果不指定则使用dfs.namenode.rpc-address,其实这两个端口的RPC服务没什么区别,之所以要区分,我猜想这样分开主要是因为datanode和namenode通讯时不会影响client和namenode的通讯,因为同一个端口同时打开的句柄毕竟是预先设定的,缺省为10个
    3)需要打开一个http服务,用于提供web访问以及传输edits log,checkpoint等,对应配置为dfs.namenode.http-address

2、datanode
    1)需要指定一个目录来保存blocks,对应配置dfs.datanode.data.dir
    2)当然还需要知道namenode所打开的RPC服务端口,以便于建立RPC联接

3、secondarynamenode
    本次没有测试,而且所做的工作可以为backupnode取代,就略过了。

4、backupnode
    backupnode本质上也是一个namnode,因此namenode需要的它都需要,只是名称上可能有些不同,具体如下:

    1)对于保存image和edits的目录与namenode没什么不同dfs.namenode.backup.address
    2)对我提供RPC服务的配置项分别叫做dfs.namenode.servicerpc-address(与namenode相同),dfs.namenode.backup.address(namenode叫做dfs.namenode.rpc-address)
    3)对我提供的http服务配置项叫做:dfs.namenode.backup.http-address
    4)backupnode需要和对应的namenode的http服务通讯因此需要告诉backupnode对应的namenode的http服务的地址,对应配置项dfs.namenode.http-address
    5)比较没趣的还要指定一个配置项dfs.federation.nameservice.id,随便可以指定什么值,目前不会使用到,但不知定还不行,就随便指定一个值就可以了,因为backupnode继承namennode导致的,当然也可以不指定,通过其他方法来配置,但那种方法也很不理想,使配置变的怪怪的,所以还是指定一下为好

hadoop 0.23的一个重要feature就是federation,因此通过配置项dfs.federation.nameservices来枚举出全部的nameserviceID,上面说的一些配置项,后面跟上对应的ID,就可以完成配置了,其实namenode在启动时是这样做的,通过比较本机的ip和配置项中value的ip来确定该配置想是否应该加入到启动是的conf当中,通过这个手段,就可以将自己需要的配置从配置文件中分离出来了。
另外,传说hadoop 0.23.0兼容0.20的各种配置,但还是有些差别,缺省情况下,系统从hadoop-0.23.0/etc/hadoop/目录中读取配置文件,当然可以通过HDFS_CONF_DIR来指定,基于这一点,我们把配置文件放在hadoop-0.23.0/etc/hadoop/目录下


假设我们有4台机器,h1-1、h1-2、h1-3、h1-4
1)namenode为h1-1、h1-2
2)datanode为h1-1、h1-2、h1-3、h1-4
3)backupnode为h1-3
具体的配置文件如下:
    1)h1-1、h1-2、h1-3、h1-4的hadoop-0.23.0/etc/hadoop/slaves
    h1-1
    h1-2
    h1-3
    h1-4

    2)h1-1、h1-2、h1-4(不包括h1-3)的hadoop-0.23.0/etc/hadoop/hdfs.site的配置如下:

        <?xml version="1.0"?>
        <configuration>
        <property>
         <name> dfs.namenode.name.dir</name>
         <value>/home/rmss/zhanggang/hdfs/name</value>
        </property>
        <property>
         <name>dfs.namenode.edits.dir</name>
         <value>/home/rmss/zhanggang/hdfs/edits</value>
        </property>
        <property>
         <name>dfs.namenode.checkpoint.dir</name>
         <value>/home/rmss/zhanggang/hdfs/checkpoint</value>
        </property>
        <property>
         <name>dfs.namenode.checkpoint.edits.dir</name>
         <value>/home/rmss/zhanggang/hdfs/checkpoint_edits</value>
        </property>
        <property>
         <name> dfs.datanode.data.dir</name>
         <value>/home/rmss/zhanggang/hdfs/data</value>
        </property>
        <property>
         <name>dfs.federation.nameservices</name>
         <value>ns1,ns2</value>
        </property>
        <property>
         <name>dfs.namenode.rpc-address.ns1</name>
         <value>h1-1:9000</value>
        </property>
        <property>
         <name>dfs.namenode.http-address.ns1</name>
         <value>h1-1:50070</value>
        </property>
        <property>
         <name>dfs.namenode.servicerpc-address.ns1</name>
         <value>h1-1:9005</value> 
        </property>
        <property>
         <name>dfs.namenode.rpc-address.ns2</name>
         <value>h1-2:9000</value>
        </property>
        <property>
         <name>dfs.namenode-http-address.ns2</name>
         <value>h1-2:50070</value>
        </property>
        <property>
         <name>dfs.namenode.servicerpc-address.ns2</name>
         <value>h1-2:9005</value>
        </property>
        <!-- Site specific YARN configuration properties -->
           
        </configuration>

    3)h1-3作为backupnode的hadoop-0.23.0/etc/hadoop/hdfs.site配置文件如下:

        <?xml version="1.0"?>
        <configuration>
        <property>
         <name> dfs.namenode.name.dir</name>
         <value>/home/rmss/zhanggang/hdfs/name</value>
        </property>
        <property>
         <name>dfs.namenode.edits.dir</name>
         <value>/home/rmss/zhanggang/hdfs/edits</value>
        </property>
        <property>
         <name>dfs.namenode.checkpoint.dir</name>
         <value>/home/rmss/zhanggang/hdfs/checkpoint</value>
        </property>
        <property>
         <name>dfs.namenode.checkpoint.edits.dir</name>
         <value>/home/rmss/zhanggang/hdfs/checkpoint_edits</value>
        </property>
        <property>
         <name> dfs.datanode.data.dir</name>
         <value>/home/rmss/zhanggang/hdfs/data</value>
        </property>
        <property>
         <name>dfs.federation.nameservices</name>
         <value>ns1,ns2</value>
        </property>
        <property>
         <name>dfs.namenode.rpc-address.ns1</name>
         <value>h1-1:9000</value>
        </property>
        <property>
         <name>dfs.namenode.http-address.ns1</name>
         <value>h1-1:50070</value>
        </property>
        <property>
         <name>dfs.namenode.servicerpc-address.ns1</name>
         <value>h1-1:9005</value>
        </property>
        <property>
         <name>dfs.namenode.rpc-address.ns2</name>
         <value>h1-2:9000</value>
        </property>
        <property>
         <name>dfs.namenode-http-address.ns2</name>
         <value>h1-2:50070</value>
        </property>
        <property>
         <name>dfs.namenode.servicerpc-address.ns2</name>
         <value>h1-2:9005</value>
        </property>
        <property>
         <name>dfs.namenode.http-address</name>
         <value>h1-1:50070</value>
        </property>

        <property>
         <name>dfs.namenode.backup.http-address</name>
         <value>h1-3:8003</value>
        </property>
        <property>
         <name>dfs.namenode.backup.address</name>
         <value>h1-3:8002</value>
        </property>
        <property>
         <name>dfs.namenode.servicerpc-address</name>
         <value>h1-1:9000</value>
        </property>
        <property>
         <name>dfs.federation.nameservice.id</name>
         <value>XXXX</value>
        </property>
        <!-- Site specific YARN configuration properties-->
        </configuration>

    其他一些需要注意的地方:
        1)环境变量JAVA_HOME
        2)如果显示的datanode名称不对可以指定slave.host.name,到hadoop-0.23.0/etc/hadoop/core.site

    如果一切顺利准备启动了
        1)bin/hdfs namenode –format –clusterid your_cluster_id
        2)sbin/start-hdfs.sh
           sbin/start-dfs.sh只负责启动namenode、datanode、secondarynamenode,不负责启动backupnode
        3)backupnode启动

ssh h1-3
bin/hdfs namenode -backup

可以打开浏览器分别访问:
    1)ns1:
    http://h1-1:50070
    2)ns2
    http://h1-2:50070
    3)backupnode
    http://h1-3:8003

由于有多个namenode,因此使用hdfs是需要指定某个具体的namenode,例如在ns1和ns2上创建目录可以用下面命令:

    bin/hadoop fs -mkdir hdfs://h1-1:9000/test
    bin/hadoop fs -mkdir hdfs://h1-2:9000/test
    bin/hadoop fs -ls hdfs://h1-1:9000/

因为启动了backup,因此可以查看backupnode的namespace,如下:

bin/hadoop fs -ls hdfs://h1-3:8002/得到的结果和bin/hadoop fs -ls hdfs://h1-1:9000/是一样的。

参考文献:

1)hadoop-0.23.0源代码

2)http://www.blogjava.net/shenh062326/archive/2011/11/23/363472.html

3)http://blog.sina.com.cn/s/blog_4a1f59bf01010kx3.html

4)http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/Federation.html

其实还有一些关于fs.defaultFS和dfs.federation.nameservice.id的故事,就不说了。代码中都很清楚,总结一下,阅读源代码是理解配置最简单最高效的方法,查看logs/下面的信息可以得到一些有价值的提示。

一下是在配置过程中,零星的笔记,作为自己的日后参考。

--------------------


1、环境变量设置JAVA_HOME, HADOOP_CONF_ DIR, HDFS_CONF_DIR,
export HADOOP_CONF_DIR=/home/rmss/zhanggang/hadoop-0.23.0/conf
export HDFS_CONF_DIR=/home/rmss/zhanggang/hadoop-0.23.0/conf
2、将主机名加入到/etc/hosts中
3、两个namenode都要format
4、显示的主机名不对,需要指定slave.host.name
6、fs.defaultFS是否设置都是可以的,但如果配置backup没有配置dfs.namenode.servicerpc-address,则要读取fs.defaultFS作为default的服务,因此如果backup没有配置dfs.namenode.servicerpc-address,则要配置fs.defaultFS,之所以不配值fs.defaultFS是因为在name的initializeGenericKeys函数中会根据配置的dfs.federation.nameservices和dfs.namenode.rpc-address.ns1来合成并设置这个参数,具体过程是这样的,首先namenode启动时,会根据dfs.federation.nameservices得到自己的nameserviceId,然后将dfs.namenode.rpc-address+nameserviceId = dfs.namenode.rpc-address.ns1的值取出来,从新设置到conf中,此时设置的key和value分别是key = dfs.namenode.rpc-address和 value = dfs.namenode.rpc-address.ns1中设定的值,例如如果配置文件如下:
<property>
 <name>dfs.federation.nameservices</name>
 <value>ns1,ns2</value>
</property>
<property>
 <name>dfs.namenode.rpc-address.ns1</name>
 <value>h1-1:9000</value>
</property>
那么经过这个函数,在conf对象中会增加一个key-value是:key=dfs.namenode.rpc-address,value=h1-1:9000,同时该函数还会增加一个配置项:key=fs.defaultFS value=hdfs://h1-1:9000,增加了这些选项后,为以后的服务启动做准备。(参考Namenode::initializeGenericKeys函数)
那么我们在说说,dfs.federation.nameservice.id这个参数,这个也是一个可选配置,具体的工作原理是这样的,上面说到,namenode启动时要确定自己的nameserviceID,如果用户指定了dfs.federation.nameservice.id选项,就使用dfs.federation.nameservice.id中配置的值,如果没有指定该配置,那么就将dfs.federation.nameservice中指定的名称对应的dfs.namenode.rpc-address.ns1的地址和本机的地址进行比较,从而确定哪个配置是本机应该使用的配置(参考Namenode::getNameServiceId函数)
7、.23.0缺省读取etc/hadoop下的配置,不过配置也可一通过环境变量HDFS_CONF_DIR进行设置
8、backup配置
dfs.namenode.http-address
dfs.namenode.servicerpc-address
启动backup时,dfs.namenode.name.dir和dfs.namenode.edits.dir所设置的目录都应该手工建立好,
9、最好的办法就是查看log,通过eclipse查看源码,看哪里配置有问题
10、sbin/start-dfs.sh只负责启动namenode、datanode、secondarynamenode,不负责启动backupnode
12、dfs.namenode.rpc-address和dfs.namenode.servicerpc-address的关系,dfs.namenode.rpc-address是namenode和client联系的通道,而后者是datanode和namenode联系的通道,但如果没有指定后者,datanode也会通过前者来和namenode来进行通讯,我猜想这样分开主要可以是datanode和namenode通讯时不会影响client和namenode的通讯,因为同一个端口同时打开的句柄毕竟是预先设定的,缺省为10个







  1. tar -zxvf hadoop-0.23.0.tar.gz
  2. 安装jdk:  chmod 755 jdk-6u27-linux-x64-rpm.bin         ./jdk-6u27-linux-x64-rpm.bin
  3. 配置jdk:vi /etc/profile                export  PATH=/usr/java/jdk1.6.0_27/bin:$PATH
                                                       export JAVA_HOME=/usr/java/jdk1.6.0_27/
  4. 单机的例子

mkdir input

# bin/hadoop jar hadoop-mapreduce-examples-0.23.0.jar grep input output ‘conf*’

cat output/*

cp conf/*.xml input

分享到:
评论

相关推荐

    hadoop-eclipse-plugin1.2.1 and hadoop-eclipse-plugin2.8.0

    在实际使用中,安装Hadoop-Eclipse-Plugin非常简单。只需将jar文件(如hadoop-eclipse-plugin-2.8.0.jar)复制到Eclipse的plugins目录下,然后重启Eclipse,即可在“New Project”中看到Hadoop相关的项目类型。在...

    hadoop-fuse-dfs安装.docx

    ### Hadoop-Fuse-Dfs 安装与配置详解 #### 一、概述 本文档旨在为读者提供关于在CDH(Cloudera Distribution Including Apache Hadoop)环境下安装和配置Hadoop-Fuse-Dfs的详细步骤及注意事项。通过本文档的学习,...

    hadoop-auth-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-auth-2.5.1.jar; 赠送原API文档:hadoop-auth-2.5.1-javadoc.jar; 赠送源代码:hadoop-auth-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-auth-2.5.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-0.23.0-eclipse-plugin

    hadoop-0.23.0 eclipse-plugin

    hadoop-yarn-client-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-yarn-client-2.6.5.jar; 赠送原API文档:hadoop-yarn-client-2.6.5-javadoc.jar; 赠送源代码:hadoop-yarn-client-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-yarn-client-2.6.5.pom;...

    hadoop-lzo-0.4.21-SNAPSHOT jars

    1. `hadoop-lzo-0.4.21-SNAPSHOT-javadoc.jar`:这是Hadoop-LZO的Java文档(Javadoc),包含了一份详细的API文档,开发者可以通过查阅这份文档了解如何在自己的代码中调用Hadoop-LZO提供的接口和类,进行数据压缩...

    hadoop-mapreduce-client-jobclient-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...

    hadoop-3.3.4 版本(最新版)

    Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...

    hadoop-eclipse-plugin-3.1.1.tar.gz

    Hadoop-Eclipse-Plugin-3.1.1是一款专为Eclipse集成开发环境设计的插件,用于方便地在Hadoop分布式文件系统(HDFS)上进行开发和调试MapReduce程序。这款插件是Hadoop生态系统的组成部分,它使得Java开发者能够更加...

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    hadoop-yarn-common-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-yarn-common-2.6.5.jar 赠送原API文档:hadoop-yarn-common-2.6.5-javadoc.jar 赠送源代码:hadoop-yarn-common-2.6.5-sources.jar 包含翻译后的API文档:hadoop-yarn-common-2.6.5-javadoc-...

    flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar.tar.gz

    在这个特定的兼容包中,我们可以看到两个文件:flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar(实际的兼容库)和._flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar(可能是Mac OS的元数据文件,通常...

    hadoop-lzo-0.4.20.jar

    hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.20.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.20.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...

    hadoop-eclipse-plugin-1.2.1.jar有用的

    该资源包里面包含eclipse上的hadoop-1.2.1版本插件的jar包和hadoop-1.2.1.tar.gz,亲测可用~~请在下载完该包后解压,将hadoop-1.2.1...preferences ,browser选择D:\hadoop-eclipse,配置Hadoop MapReduce的安装路径。

    hadoop-common-2.6.0-bin-master.zip

    `hadoop-common-2.6.0-bin-master.zip` 是一个针对Hadoop 2.6.0版本的压缩包,特别适用于在Windows环境下进行本地开发和测试。这个版本的Hadoop包含了对Windows系统的优化,比如提供了`winutils.exe`,这是在Windows...

    hadoop插件apache-hadoop-3.1.0-winutils-master.zip

    标题中的"apache-hadoop-3.1.0-winutils-master.zip"是一个针对Windows用户的Hadoop工具包,它包含了运行Hadoop所需的特定于Windows的工具和配置。`winutils.exe`是这个工具包的关键组件,它是Hadoop在Windows上的一...

    好用的hadoop-eclipse-plugin-2.6.4.jar

    在安装Hadoop-Eclipse-Plugin-2.6.4.jar之后,开发者可以通过Eclipse的"New -&gt; Project"菜单选择"Hadoop Map/Reduce Project"选项来创建新的MapReduce项目。这个过程会自动为项目设置合适的构建路径和依赖项,使得...

    hadoop-eclipse-plugin三个版本的插件都在这里了。

    hadoop-eclipse-plugin-2.7.4.jar和hadoop-eclipse-plugin-2.7.3.jar还有hadoop-eclipse-plugin-2.6.0.jar的插件都在这打包了,都可以用。

    hadoop-eclipse-plugin-2.7.3和2.7.7

    hadoop-eclipse-plugin-2.7.3和2.7.7的jar包 hadoop-eclipse-plugin-2.7.3和2.7.7的jar包 hadoop-eclipse-plugin-2.7.3和2.7.7的jar包 hadoop-eclipse-plugin-2.7.3和2.7.7的jar包

    hadoop-2.7.7单机win7或win10搭建完整包

    3.使用编辑器打开E:\apps\hadoop-2.7.7\etc\hadoop\hadoop-env.cmd,修改set JAVA_HOME=E:\apps\你的jdk目录名 4.把E:\apps\hadoop-2.7.7\bin\hadoop.dll拷贝到 C:\Windows\System32 5.设置环境变量,新建系统变量,...

Global site tag (gtag.js) - Google Analytics