• 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

  • 相关阅读:
    查看SQL Server版本号(2005 & 2008)
    Installing an App for Testing
    Viewstate 的用法
    How to Open the Pdf file?
    工具类:Log
    SPSiteDataQuery and SPQuery
    SPSite, SPWeb Dispose and Class Design Partter
    Add Properties or Delete List Folder Content Type
    SharePoint UserControl
    Click Once 布署
  • 原文地址:https://www.cnblogs.com/end/p/2636304.html
Copyright © 2020-2023  润新知