当前位置: 首页 > 工具软件 > Hadoop-PDL > 使用案例 >

Hadoop分布式部署

费星晖
2023-12-01

好久没有部署集群了,需要测试性能,本次部署记录如下:


HBase-0,94.5+Hadoop-1.0.4,已经安装好了java,3台机器,1台namenode/master,2台datanode/regionserver

用户名可以用hadoop这样隔离起来挺好,不过我直接使用了当前用户名


先设置/etc/hosts

10.92.2.75  c1.N2.Domino.narwhal.pdl.cmu.local
10.92.2.64  c2.N2.Domino.narwhal.pdl.cmu.local
10.92.2.78  c3.N2.Domino.narwhal.pdl.cmu.local


再设置机器免秘要登录


部署Hadoop

下载解压

$ wget http://mirror.olnevhost.net/pub/apache/hadoop/common/stable1/hadoop-1.0.4-bin.tar.gz
$ tar -zxf hadoop-1.0.4-bin.tar.gz -C ~/local/opt
$ cd ~/local/opt/hadoop-1.0.4

编辑 conf/hadoop-env.sh,设置 JAVA_HOME

$ echo $JAVA_HOME
/usr/lib/jvm/java
$ vim conf/hadoop-env.sh

取消JAVA_HOME那一行的注释,设置正确的JDK位置

export JAVA_HOME=/usr/lib/jvm/java

配置

conf/core-site.xml:

<configuration>

    <property>             <name>fs.default.name</name>             <value>hdfs://c1.N3.Domino.narwhal.pdl.cmu.local:9000</value>     </property>     <property>             <name>fs.checkpoint.dir</name>             <value>/l0/hadoop-tmp/dfs/namesecondary</value>     </property> </configuration>

Hadoop会自动创建目录。


conf/hdfs-site.xml: 本例中设置的为1副本

<configuration>
     <property>
              <name>dfs.name.dir</name>
              <value>/l0/hadoop-tmp/dfs/name</value>
     </property>
     <property>
              <name>dfs.data.dir</name>
              <value>/l0/hadoop-tmp/dfs/data</value>
     </property>
     <property>
              <name>dfs.replication</name>
              <value>1</value>
     </property>
</configuration>

conf/mapred-site.xml:

<configuration>
    <property>
            <name>mapred.job.tracker</name>
            <value>c1.N3.Domino.narwhal.pdl.cmu.local:9001</value>
    </property>
    <property>
            <name>mapred.local.dir</name>
            <value>/l0/hadoop-tmp/mapred/local</value>
    </property>
    <property>
            <name>mapreduce.jobtracker.staging.root.dir</name>
            <value>/l0/hadoop-tmp</value>
    </property>
</configuration>

conf/masters:

c1.N3.Domino.narwhal.pdl.cmu.local

conf/slaves:

c2.N3.Domino.narwhal.pdl.cmu.local
c3.N3.Domino.narwhal.pdl.cmu.local

将整个hadoop文件夹拷贝到所有slaves

scp -r hadoop-1.0.4/ tieyingz@c2.N5.Domino.narwhal.pdl.cmu.local:/l0

运行 hadoop

在master上执行以下命令,启动hadoop

$ cd ~/local/opt/hadoop-1.2.1/
#只需一次,下次启动不再需要格式化,只需 start-all.sh
$ bin/hadoop namenode -format
$ bin/start-all.sh

检查是否启动成功

在master上执行:

$ jps

2615 NameNode
2767 JobTracker
2874 Jps

在一台slave上执行:

$ jps

3415 DataNode
3582 TaskTracker
3499 SecondaryNameNode
3619 Jps

运行wordcount例子,进一步测试是否安装成功

将输入数据拷贝到分布式文件系统中:

$ cd ~/local/opt/hadoop-1.2.1/
$ bin/hadoop fs -put conf input

运行 Hadoop 自带的例子:

$ bin/hadoop jar hadoop-examples-*.jar wordcount input output

查看输出文件:

$ bin/hadoop fs -ls output
$ bin/hadoop fs -cat output/part-r-00000

如果能看到结果,说明这个例子运行成功。

停止 hadoop集群

在master上执行:

$ bin/stop-all.sh

(可选)在master上设置环境变量HADOOP_PREFIX,并将HADOOP_PREFIX/bin加入PATH

这一步是为了将bin目录加入PATH,这样可以在任何位置执行hadoop的各种命令。这步是可选的。

Hadoop不推荐使用HADOOP_HOME,你可以试一下,当设置了HADOOP_HOME后,执行bin/start-all.sh,第一行会打印出一行警告信息,Warning: $HADOOP_HOME is deprecated. 应该用HADOOP_PREFIX代替,见邮件列表里的这封邮件

给所有机器设置环境变量HADOOP_PREFIX,并将$HADOOP_PREFIX/bin加入PATH。

在 ~/.bashrc中添加如下4行:

export HADOOP_PREFIX=$HOME/local/opt/hadoop-1.2.1
export PATH=$PATH:$HADOOP_PREFIX/bin

source使之立刻生效,

$ source ~/.bashrc

排除错误

本文已经尽可能的把步骤详细列出来了,但是我相信大部分人不会一次成功。这时候,查找错误就很重要了。查找错误最重要的手段是查看hadoop的日志,一般在logs目录下。把错误消息复制粘贴到google,搜索一下,慢慢找错误。

注意

  1. 在第2.5步骤,如果出现 SafeModeException 异常,不用担心,等待几分钟即可。因为hadoop刚刚启动时,会进入安全模式进行自检,这需要花点时间。
  2. 如果在任何一步失败,可以stop-all.sh, 然后hadoop namenode -format,重试几次,一般可以成功。如果还是不成功,多看看 logs目录下的日志文件,把错误消息复制粘贴到google,搜索答案。

 类似资料: