zoukankan      html  css  js  c++  java
  • Hadoop的安装与配置及示例程序wordcount的运行

    前言

    最近在学习Hadoop,文章只是记录我的学习过程,难免有不足甚至是错误之处,请大家谅解并指正!Hadoop版本是最新发布的Hadoop-0.21.0版本,其中一些Hadoop命令已发生变化,为方便以后学习,这里均采用最新命令。具体安装及配置过程如下:

    1 机器配置说明

    总共有3台机器:hzau01、hzau02、hzau03

    IP地址分别为:192.168.0.4、192.168.0.17、192.168.0.6

    操作系统为:Linux2.6.33.3-85.fc13.i686.PAE

    jdk版本为:jdk1.6.0_23

    hadoop版本为:hadoop-0.21.0

    hzau01作为NameNode、JobTracker,其他两台台作为DataNode、TaskTracker

    2  查看机器间是否能相互通信(使用ping命令)

    用root登录,在NameNode上修改/etc/hosts文件,加入三台机器的IP地址和机器名,如下:

    192.168.0.4  hzau01

    192.168.0.17  hzau02

    192.168.0.6  hzau03

          设置好后验证下各机器间是否ping通,用机器名或是IP地址都可以,例如ping hzau02或ping 192.168.0.17

    Hadoop要求所有机器上hadoop的部署目录结构要相同并且有一个相同的用户名的帐户,我的默认路径为/home/garon

    3  ssh设置及关闭防火墙

    1)fedora装好后默认启动sshd服务,如果不确定的话可以查一下 [garon@hzau01 ~]$ service sshd status

    如没有启动的话,先启动 [root@hzau01 ~]# service sshd start

    建立ssh无密码登录,在NameNode上 [garon@hzau01 ~]ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa(''为两个单引号)

    会在~/.ssh/生成两个文件:id_dsa和id_dsa.pub,这两是成对出现的,把id_dsa.pub文件追加到DataNode上的authorized_keys

    [garon@hzau01 ~]$ scp ~/.ssh/id_dsa.pub hzau02:/home/garon/.ssh (注意其中目标机器后面的:与要传到的文件路径之间没有空格,即sc706:与/home/hadoop/之间没有空格)

       scp ~/.ssh/id_dsa.pub hzau03:/home/garon/.ssh

    登录到DataNode上,[garon@hzau02 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ,其余一台一样,注意:追加完后必须修改NameNode和DataNode上的.ssh和authorized_keys的权限,chmod命令,参数600,完成后测试下,例如ssh hzau02时不需要密码就可以登录,就可以知道ssh设置成功。

    2)关闭防火墙(NameNode和DataNode都必须关闭)

     [root@hzau01 ~]# service iptables stop

    注意:每次重新开机启动hadoop前都必须关闭

    4 安装jdk1.6(集群中机子都一样)

    下载jdk-6u23-ea-bin-b03-linux-i586-18_oct_2010.bin,之后直接安装,我的安装路径为:/usr/java/jdk1.6.0_23,安装后添加如下语句到/etc/profile中:

    export JAVA_HOME="/usr/java/jdk1.6.0_23"

    export JRE_HOME=/usr/java/jdk1.6.0_23/jre

    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    5 安装hadoop(集群中机子都一样)

    在官网http://apache.etoak.com//hadoop/core/下载hadoop-0.21.0.tar.gz

    [garon@hzau01 ~]$ tar xzvf hadoop-0.21.0.tar.gz

    将hadoop的安装路径添加到/etc/profile中:

    export HADOOP_HOME=/home/garon/hadoop-0.21.0

    export PATH=$HADOOP_HOME/bin:$PATH

    为了让/etc/profile生效,source一下 [garon@hzau01 ~]$ source /etc/profile

    6 配置hadoop

    其配置文件在/conf目录下

    1)配置JAVA环境

    [garon@hzau01 ~]$$ vi ~/hadoop/hadoop-0.21.0/conf/hadoop-env.sh

    export JAVA_HOME=/usr/java/jdk1.6.0_23

    2)配置conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml文件

    [garon@hzau01 hadoop-0.21.0]$ vi conf/core-site.xml

    <configuration>

         <property>

              <name>hadoop.tmp.dir</name>

              <value>/home/garon/hadoopgaron</value>

         </property>

         <property>

              <name>fs.default.name</name>

              <value>hdfs://hzau01/</value>

         </property>

    </configuration>

    [garon@hzau01 hadoop-0.21.0]$ vi conf/mapred-site.xml

    <configuration>

         <property>

              <name>mapred.jobtracker.address</name>

              <value>hzau01:9001</value>

         </property>

    </configuration>

    [garon@hzau01 hadoop-0.21.0]$ vi conf/hdfs-site.xml

    <configuration>

         <property>

              <name>dfs.name.dir</name>

              <value>/home/garon/hadoopname</value>

         </property>

         <property>

              <name>dfs.data.dir</name>

              <value>/home/garon/hadoopdata</value>

         </property>

         <property>

              <name>dfs.replication</name>

              <value>1</value>

         </property>

    </configuration>

    3)将NameNode上完整的hadoop拷贝到DataNode上,可先将其进行压缩后直接scp过去或是用盘拷贝过去

    4) 配置NameNode上的conf/masters和conf/slaves

    masters:192.168.0.4

    slaves:192.168.0.17

    192.168.0.6

    7 运行hadoop

    1)格式化文件系统

    [garon@hzau01 bin]$ hdfs namenode -format

    注意:格式化时要防止NameNode的namespace ID与DataNode的namespace ID的不一致,因为每格式化一次会产生Name、Data、tmp等临时文件记录信息,多次格式化会产生很多,会导致ID的不同,造成hadoop不能运行

    2)启动hadoop

    [garon@hzau01 bin]$ start-dfs.sh

    [garon@hzau01 bin]$ start-mapred.sh

    3)用jps命令查看进程,NameNode上的结果如下:

    5334 JobTracker

    5215 SecondaryNameNode

    5449 Jps

    5001 NameNode

    4)查看集群状态

    [garon@hzau01 bin]$ hdfs dfsadmin -report

    确保运行的DataNode个数是正确的,我的是2个,这样可以查看哪个DataNode没有运行

    8 运行Wordcount.java程序

    1)先在本地磁盘上建立两个文件f1和f2

    [garon@hzau01 bin]$ echo ”Hello world Bye world" > ~/input/f1

    [garon@hzau01 bin]$ echo ”hello hadoop bye hadoop” > ~/input/f2

    2)在hdfs上建立一个input目录

    [garon@hzau01 bin]$ hadoop fs -mkdir /tmp/input

    3)将f1和f2拷贝到hdfs的input目录下

    [garon@hzau01 bin]$ hadoop fs -put /home/garon/input /tmp

    4)查看hdfs上有没有f1,f2

    [garon@hzau01 bin]$ hadoop fs -ls /tmp/input

    5)执行wordcount(确保hdfs上没有output目录)

    [garon@hzau01 bin]$ hadoop jar ../hadoop-mapred-examples-0.21.0.jar wordcount /tmp/input /output

    6)运行完成,查看结果

           [garon@hzau01 bin]$ hadoop fs -cat /output/part-r-00000

           Bye        1

           Hello        1

           bye        1

           hadoop   2

           hello        1

           world 2

  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/end/p/2636304.html
Copyright © 2011-2022 走看看