Ubuntu12.04 64bit搭建Hadoop-2.2.0

一、准备工作:

  1. 集群安装ubuntu12.04 64bit系统,配置各结点IP地址
  2. 开启ssh服务,方便以后远程登录,命令sudo apt-get install openssh-server(无需重启)
  3. 使用命令:ssh [email protected]测试服务连接是否正常
  4. 设置无密钥登录:
    • 修改主机名:sudo
      vim /etc/hostname
      将各主机设置成相应的名字,如mcmaster、node1、node2...
    • 修改/etc/hosts文件:sudo
      vim /etc/hosts
      ,建立master和各结点之间的ip和hostname映射关系:

      127.0.0.1    localhost
      192.168.0.125    master
      192.168.0.126    node2
      192.168.0.127    node3
    • 打通各主机之间的无密钥登录(该操作在每个结点上都要进行):
      • 进入当前用户目录中的.ssh文件夹:cd
        ~/.ssh
      • ssh-keygen
        -t rsa
        之后一路回车(产生密钥)
      • 将id_rsa.pub追加到授权的key中去:cat
        id_rsa.pub >> authorized_keys
      • 重启ssh服务使其生效:service
        ssh restart
  5. 设置远程无密码登录:由于有node2~node3多个子节点,所以需要将master的公钥添加到各结点的authorized_keys中去,以实现master到各slave的无密钥登录。

    进入master的.ssh目录,执行scp authorized_keys [email protected]:~/.ssh/authorized_keysmc_from_master

    进入node2的.ssh目录,执行cat authorized_keys_from_master >> authorized_keys

    至此,可以在master上执行ssh node2进行无密码登录了,其他结点操作相同

  6. 安装jdk,这里需要手动下载sun的jdk,不使用源中的openJDK.由于使用的是64bit ubuntu,所以需要下载64bit的jdkhttp://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
    • 将jdk解压到文件夹/usr/lib/jvm/jdk1.7.0
    • 打开/etc/profile,追加如下信息:
      export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    • 执行命令source /etc/profile使环境变量生效
    • 每个结点均如此设置,使用java -version进行验证
  7. 关闭防火墙:ubuntu系统的iptables默认是关闭的,可通过命令sudo ufw status查看防火墙状态
  8. 编译hadoop-2.2.0 64bit.由于apache官网提供的hadoop可执行文件是32bit对于64bit的按照文件则需要用户手动编译生成。
    • 这些库和包在编译过程中都会用到,缺少的话会影响编译,因此首先从源里将它们直接装上

      sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
    • 另外还需要使用最新的2.5.0版本的protobuf:https://code.google.com/p/protobuf/downloads/list,解压,依次执行如下命令安装
      $ ./configure --prefix=/usr
      $ sudo make
      $ sudo make check
      $ sudo make install

      执行如下命令检查一下版本:

      $ protoc --version
      libprotoc 2.5.0
    • 安装配置maven:直接使用apt-get从源中安装 sudo apt-get install maven
    • 编译hadoop-2.2.0:进入如下页面下载hadoop-2.2.0源代码http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-2.2.0/

      解压到用户目录/home/hadoop/Downloads/ 进入hadoop-2.2.0执行编译:

      $ tar -vxzf hadoop-2.2.0-src.tar.gz
      $ cd hadoop-2.2.0-src
      $ mvn package -Pdist,native -DskipTests -Dtar

      编译过程中maven会自动解决依赖,编译完成后,系统会提示一下信息:

      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------
      [INFO] Total time: 15:39.705s
      [INFO] Finished at: Fri Nov 01 14:36:17 CST 2013
      [INFO] Final Memory: 135M/422M

      然后在以下目录中可以获取编译完成的libhadoop:

      hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0

      出现问题:

      [ERROR] COMPILATION ERROR :
      [INFO] -------------------------------------------------------------
      [ERROR] /home/hduser/code/hadoop-2.2.0-src/hadoop-common-project/hadoopauth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[88
      ,11] error: cannot access AbstractLifeCycle
      [ERROR]  class file for org.mortbay.component.AbstractLifeCycle not found
      /home/hduser/code/hadoop-2.2.0-src/hadoop-common-project/hadoopauth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96
      ,29] error: cannot access LifeCycle
      [ERROR]  class file for org.mortbay.component.LifeCycle not found

      解决方案:需要编辑hadoop-common-project/hadoop-auth/pom.xml文件,添加以下依赖:

      <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <scope>test</scope>
      </dependency>

      再次执行命令编译即可。

二、安装配置hadoop-2.2.0

  1. 在mcmaster上建立Cloud文件夹,并将hadoop-2.2.0拷贝到该文件夹下

    $ cd ~
    $ mkdir Cloud
    $ cp ....
  2. 编辑~/.bashrc文件,加入如下内容:
    export HADOOP_PREFIX="/home/hadoop/Cloud/hadoop-2.2.0"
    export PATH=$PATH:$HADOOP_PREFIX/bin
    export PATH=$PATH:$HADOOP_PREFIX/sbin
    export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
    export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
    export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
    export YARN_HOME=${HADOOP_PREFIX}

    保存退出,然后source ~/.bashrc,使之生效

  3. 需要修改如下文件:

    core-site.xml: hadoop core的配置项,例如hdfs和mapreduce常用的I/O设置等

    mapred-site.xml: mapreduce守护进程的配置项,包括jobtracker和tasktracker

    hdfs-site.xml: hdfs守护进程配置项

    yarn-site.xml: yarn守护进程配置项

    masters: 记录运行辅助namenode的机器列表

    slaves: 记录运行datanode和tasktracker的机器列表

  4. 在hadoop-2.2.0/etc/hadoop目录中依次编辑如上所述的配置文件,若未找到mapred-site.xml文件,可自行创建,其中core-site.xml、mapred-site.xml、hdfs-site.xml、yarn-site.xml为配置文件:

    core-site.xml:

    <configuration>
     <property>
         <name>io.native.lib.avaliable</name>
         <value>true</value>
     </property>    
    
     <property>
         <name>fs.default.name</name>
         <value>hdfs://mcmaster:9000</value>
         <final>true</final>
     </property>
    
     <property>
         <name>hadoop.tmp.dir</name>
         <value>/home/hadoop/Cloud/workspace/tmp</value>
     </property>
    </configuration>

    hdfs-site.xml:

    <configuration>
     <property>
         <name>dfs.replication</name>
         <value>3</value>
     </property>
    
     <property>
         <name>dfs.permissions</name>
         <value>false</value>
     </property>
    
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>/home/hadoop/Cloud/workspace/hdfs/data</value>
         <final>true</final>
     </property>
    
     <property>
         <name>dfs.namenode.dir</name>
         <value>/home/hadoop/Cloud/workspace/hdfs/name</value>
     </property>
    
     <property>
         <name>dfs.datanode.dir</name>
         <value>/home/hadoop/Cloud/workspace/hdfs/data</value>
     </property>
    
     <property>
         <name>dfs.webhdfs.enabled</name>
         <value>true</value>
     </property>
    </configuration>

    mapred-site.xml:

    <configuration>
     <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
    
     <property>
         <name>mapreduce.job.tracker</name>
         <value>hdfs://mcmaster:9001</value>
         <final>true</final>
     </property>
    
     <property>
         <name>mapreduce.map.memory.mb</name>
         <value>1536</value>
     </property>
    
     <property>
         <name>mapreduce.map.java.opts</name>
         <value>-Xmx1024M</value>
     </property>
    
     <property>
         <name>mapreduce.reduce.memory.mb</name>
         <value>3072</value>
     </property>
    
     <property>
         <name>mapreduce.reduce.java.opts</name>
         <value>-Xmx2560M</value>
     </property>
    
     <property>
         <name>mapreduce.task.io.sort.mb</name>
         <value>512</value>
     </property>
    
     <property>
         <name>mapreduce.task.io.sort.factor</name>
         <value>100</value>
     </property>
    
     <property>
         <name>mapreduce.reduce.shuffle.parallelcopies</name>
         <value>50</value>
     </property>
    
     <property>
         <name>mapreduce.system.dir</name>
         <value>/home/hadoop/Cloud/workspace/mapred/system</value>
         <final>true</final>
     </property>
    
     <property>
         <name>mapreduce.local.dir</name>
         <value>/home/hadoop/Cloud/workspace/mapred/local</value>
         <final>true</final>
     </property>
    </configuration>

    yarn-site.xml:

    <configuration>
     <property>
         <name>yarn.resourcemanager.address</name>
         <value>mcmaster:8080</value>
     </property>
    
     <property>
         <name>yarn.resourcemanager.scheduler.address</name>
         <value>mcmaster:8081</value>
     </property>
    
     <property>
         <name>yarn.resourcemanager.resource-tracker.address</name>
         <value>mcmaster:8082</value>
     </property>
    
     <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
     </property>
    
     <property>
         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
         <value>org.apache.hadoop.mapred.ShuffleHandler</value>
     </property>
    </configuration>

    slaves:

    node2
    node3

    在hadoop-2.2.0/etc/hadoop目录下的hadoop-env.sh中添加如下内容,另外在yarn-env.sh中填充相同的内容:

    export HADOOP_PREFIX=/home/hadoop/Cloud/hadoop-2.2.0
    export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
    export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
    export PATH=$PATH:$HADOOP_PREFIX/bin
    export PATH=$PATH:$HADOOP_PREFIX/sbin
    export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
    export YARN_HOME=${HADOOP_PREFIX}
    export HADOOP_CONF_HOME=${HADOOP_PREFIX}/etc/hadoop
    export YARN_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
  5. 将配置完成的hadoop分发到各结点:
    $ scp ~/Cloud/hadoop-2.2.0 node2:~/Cloud/
    $ ...
  6. 进入mcmaster的hadoop根目录下,格式化namenode,随后启动集群:
    $ cd hadoop-2.2.0
    $ bin/hdfs namenode -format
    $ sbin/start-all.sh

    可以使用jps命令产看守护进程是否启动

  7. 登录192.168.0.1258088可产看资源管理页面

三、运行实例测试程序

WordCount是最简单的mapreduce测试程序,该程序的完整代码可以在hadoop安装包的"src/examples"目录下找到,测试步骤如下:

  1. 创建本地示例文件

    在/home/hadoop/Downloads/下创建两个示例文件test1.txt和test2.txt

     $ cd ~/Downloads
     $ echo "hello hadoop" > test1.txt
     $ echo "hello world" > test2.txt
  2. 在HDFS上创建输入文件夹
     hadoop fs -mkdir /input
  3. 上传本地文件到集群的input目录
     hadoop fs -put test1.txt /input
     hadoop fs -put test2.txt /input
  4. 运行WordCount
     hadoop jar ~/Cloud/hadoop-2.2.0/share/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /input /output

    如果配置正确的话,会在/output下输出part-r-00000文件,该文件中保存这次执行的输出结果

    注意:此处的输出文件夹 /output必须在执行前不存在

时间: 2024-10-06 09:00:08

Ubuntu12.04 64bit搭建Hadoop-2.2.0的相关文章

ubuntu12.04上搭建darwin streaming server6.03

个人建议:使用DarwinStreamingSrvr5.5.5,因为DarwinStreamingSrvr6.0.3安装过程中有很多问题需要解决!而且安装只需执行./Install就可以! 1:下载darwin源代码DarwinStreamingSrvr6.0.3-Source.tar,补丁patch dss-6.0.3.patch $wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar $wge

ubuntu12.04下搭建ftp服务器

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网服务器上搭建一个ftp的服务器. 1.安装ftp 首先在终端下键入如下内容,安装ftp服务器: sudo apt-get install vsftpd 2.配置ftp 修改ftp的配置文件,该文件在/etc目录下,在终端中键入如下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的修改以下几个配置项即可: #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_e

ubuntu12.04下搭建ftpserver

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网server上搭建一个ftp的server. 1.安装ftp 首先在终端下键入例如以下内容,安装ftpserver: sudo apt-get install vsftpd 2.配置ftp 改动ftp的配置文件,该文件在/etc文件夹下,在终端中键入例如以下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的改动下面几个配置项就可以: #禁止匿名訪问 anonymous_enable=NO

Ubuntu12.04 64bit版本下载Android源码完整教程

首先去官网http://source.android.com/source/initializing.html可以看到完整的安装教程.不过一般情况下,按照这个教程是无法一步到位的,因为中途肯定会遇到很多问题.这里我把我遇到的问题以及相应的解决方案总结一下: 1.sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core

Ubuntu12.04下搭建Java环境

1.认识需要配置的环境变量 1). PATH: 作用是指定命令搜索路径,打开/etc/environment可以看到PATH变量的值,该变量包含了一系列的路径.那些路径都是一些经常使用的系统命令的目录地址,如:./sbin./bin等.在bash终端执行命令时,系统会自动到PATH变量所指定的路径中查找是否能找到相应的命令程序.因此,我们需要把jdk安装目录下的bin目录增加到现存的PATH变量中让使用java命令如同系统命令一样方便. 2). CLASSPATH: 作用是指定类搜索路径,让jv

Ubuntu12.04(64bit)下安装Qt4总结

本文主要介绍linux系统Ubuntu12.04(64bit)下Qt4.8.5的安装,其中还涉及Fedora9下Qt4的安装. 1.下载软件:去Qt的官网下载Qt4.8.5和Qt Creator软件,下载的具体软件如下: Qt4.8.5软件:qt-everywhere-opensource-src-4.8.5.tar.gz Qt Creator软件:qt-creator-linux-x86_64-opensource-2.5.2.bin 2.解压qt-everywhere-opensource-

ubuntu12.04 64bit libncurses5-dev和libncurses5-dev:i386共存性问题讨论

ubuntu12.04 64bit 编译kernel(或者make menuconfig)源码时出现如下错误: HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf.o: In function `show_help': mconf.c:(.text+0x811): undefined reference to `stdscr' scripts/kconfig/mconf.o: In function `main': mconf.c:(.text+

Ubuntu12.04环境搭建遇到的问题和使用技巧 (二)

接上:Ubuntu12.04环境搭建遇到的问题和使用技巧(一) 到新公司后需要在Ubuntu12.04下搭建Android的开发环境,在这个过程中还是会碰到很多问题,在这里记录下来,方便自己以后和有需要的人参考.来源于网络! 10.改变所属的群组chown -R user1.user2 dir 如果目录的群组所属是root的话,在编译一些文件有可能会出错,一般安装时需要使用root,其它情况不建议使用sudo或root 修改前的D目录是root用户 使用命令 [email protected]:

Ubuntu12.04环境搭建遇到的问题

到新公司后需要在Ubuntu12.04下搭建Android的开发环境,在这个过程中还是会碰到很多问题,在这里记录下来,方便自己以后和有需要的人参考.来源于网络! 1. Q:在终端中输入: sudo apt-get install build-essential 提示:更换介质:请把标有 "Ubuntu 12.04.1 LTS _Precise Pangolin_ - Release amd64 (20120823.1)" 的盘片插入驱动器"/cdrom/"再按回车