阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop学习札记

106次阅读
没有评论

共计 17025 个字符,预计需要花费 43 分钟才能阅读完成。

近期对 Hadoop 很感兴趣,下面是在 CentOS 系统上进行编译的分享

系统情况如下:

1. CentOS 6.2 64 位
2. hadoop-2.2.0
3. jdk 1.6.0_31
4. maven 3.1.0
5. protobuf-2.5.0
6. cmake 2.8.12.1

系统中已经安装好了 JDK,并正确进行了设置,这里不说明 JDK 的安装与设置,请自行查阅

第一步:安装 maven

1.1 下载文件 apache-maven-3.1.0-alpha-1-bin.tar.gz

1.2 执行命令 tar zvxf apache-maven-3.1.0-alpha-1-bin.tar.gz

1.3 配置环境变量,编辑 etc/profile 文件,添加如下代码

MAVEN_HOME=/home/youUser/apache-maven-3.1.0-alpha-1
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME
export PATH

1.4 保存文件,并运行如下命令使环境变量生效

source /etc/profile

1.5 通过如下命令可以查看是否安装正常

mvn -version

第二步:安装 protobuf

2.1 下载文件 protobuf-2.5.0.tar.gz

2.2 执行命令 tar zvxf protobuf-2.5.0.tar.gz

2.3 进入 protobuf-2.5.0 目录,执行下面的命令

./configure
 make 
 make check 
 make install

2.4 通过如下命令可以查看是否安装正常

protoc --version

第三步:安装 cmake

3.1 下载安装文件 cmake-2.8.12.1.tar.gz

3.2 执行如下命令 tar zvxf cmake-2.8.12.1.tar.gz

3.3 进人 cmake-2.8.12.1 目录,执行如下命令

./bootstrap
make
make install

3.4 通过如下命令检查安装是否正常

cmake -version

第四步:安装必要的包

4.1 执行如下命令,安装 autotool

yum install autoconf automake libtool

4.2 执行如下命令,安装 openssl-devel

yum install openssl-devel

第五步:正式编译 hadoop

5.1 下载源码包 hadoop-2.2.0-src.tar.gz

5.2 执行解包命令 tar zvxf hadoop-2.2.0-src.tar.gz

5.3 由于源码有问题,需要进行修改,修改 hadoop-common-project/hadoop-auth/pom.xml 文件,添加如下内容

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

5.4 进入 hadoop-2.2.0-src 目录,执行如下命令

mvn clean package -Pdist,native -DskipTests -Dtar

5.5 如果能看到类型下面的输出就证明编程成功,这个过程中要保证网络通畅,需要下载很多包。

Hadoop 学习札记

5.6 进入 hadoop-dist/target 目录,看一下编译成果吧

注明:

有人说可能还需要安装 ncurses-devel,可以通过 yum install ncurses-devel 进行安装

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

以下是进行单节点 Hadoop 配置的内容,多节点也类似

1. 进行 Hadoop 的安装

1.1 上文进行了 Hadoop 的编译,将编译结果目录 hadoop-2.2.0 拷贝为 /usr/hadoop 目录

1.2 编辑 /etc/profile 文件,增加如下的内容

export HADOOP_PREFIX=/usr/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_MAPRED_HOMD=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}
export HADOOP_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop

1.3 执行 source /etc/profile 操作,使配置生效

 

2. 进行 Hadoop 的设置

2.1 修改 core-site.xml 文件(文件位置 /usr/hadoop/etc/hadoop/),添加如下内容

<configuration>
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://localhost:8020</value>
</property>
</configuration>

2.2 修改 hdfs-site.xml 文件,位置如上,添加如下内容

<configuration>
   <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/hadoop/dfs/name</value>
                <final>true</final>
   </property>
   <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/hadoop/dfs/data</value>
                <final>true</final>
   </property>
   <property>
                <name>dfs.replication</name>
                <value>1</value>
   </property>
   <property>
               <name>dfs.permissions</name>
               <value>false</value>
   </property>
</configuration>

2.3 创建 mapred-site.xml 文件,可以使用 mapred-site.xml.template 模板,书写如下的内容

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

2.4 编辑 yarn-site.xml 文件,增加如下内容

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce.shuffle</value>
  </property>
</configuration>

2.5 创建必要的目录

因为配置中有 usr/hadoop/dfs/data,/usr/hadoop/dfs/name 两个不存在的目录,请建立这两个目录

 

3. 启动 Hadoop

3.1 格式化 namenode

hdfs namenode -format

3.2 运行 start-dfs.sh,执行的过程中需要多次输入密码

3.3 执行 jps 命令,查看一下,如果有类似如下的显示,证明启动成功

4792 NameNode
5168 Jps
1679 Bootstrap
1633 Launcher
4910 DataNode
5062 SecondaryNameNode

 

4. 停止 Hadoop

4.1 执行 stop-dfs.sh 命令,执行过程中需要多次输入密码

4.2 执行 jps 命令,查看一下,所有的 NameNode 和 DataNode 应该都消失了

 

5. 正常的情况下应该首先配置 SSL 免密码连接,此文不具体说明,请参考其他资料

近期对 Hadoop 很感兴趣,下面是在 CentOS 系统上进行编译的分享

系统情况如下:

1. CentOS 6.2 64 位
2. hadoop-2.2.0
3. jdk 1.6.0_31
4. maven 3.1.0
5. protobuf-2.5.0
6. cmake 2.8.12.1

系统中已经安装好了 JDK,并正确进行了设置,这里不说明 JDK 的安装与设置,请自行查阅

第一步:安装 maven

1.1 下载文件 apache-maven-3.1.0-alpha-1-bin.tar.gz

1.2 执行命令 tar zvxf apache-maven-3.1.0-alpha-1-bin.tar.gz

1.3 配置环境变量,编辑 etc/profile 文件,添加如下代码

MAVEN_HOME=/home/youUser/apache-maven-3.1.0-alpha-1
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME
export PATH

1.4 保存文件,并运行如下命令使环境变量生效

source /etc/profile

1.5 通过如下命令可以查看是否安装正常

mvn -version

第二步:安装 protobuf

2.1 下载文件 protobuf-2.5.0.tar.gz

2.2 执行命令 tar zvxf protobuf-2.5.0.tar.gz

2.3 进入 protobuf-2.5.0 目录,执行下面的命令

./configure
 make 
 make check 
 make install

2.4 通过如下命令可以查看是否安装正常

protoc --version

第三步:安装 cmake

3.1 下载安装文件 cmake-2.8.12.1.tar.gz

3.2 执行如下命令 tar zvxf cmake-2.8.12.1.tar.gz

3.3 进人 cmake-2.8.12.1 目录,执行如下命令

./bootstrap
make
make install

3.4 通过如下命令检查安装是否正常

cmake -version

第四步:安装必要的包

4.1 执行如下命令,安装 autotool

yum install autoconf automake libtool

4.2 执行如下命令,安装 openssl-devel

yum install openssl-devel

第五步:正式编译 hadoop

5.1 下载源码包 hadoop-2.2.0-src.tar.gz

5.2 执行解包命令 tar zvxf hadoop-2.2.0-src.tar.gz

5.3 由于源码有问题,需要进行修改,修改 hadoop-common-project/hadoop-auth/pom.xml 文件,添加如下内容

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

5.4 进入 hadoop-2.2.0-src 目录,执行如下命令

mvn clean package -Pdist,native -DskipTests -Dtar

5.5 如果能看到类型下面的输出就证明编程成功,这个过程中要保证网络通畅,需要下载很多包。

Hadoop 学习札记

5.6 进入 hadoop-dist/target 目录,看一下编译成果吧

注明:

有人说可能还需要安装 ncurses-devel,可以通过 yum install ncurses-devel 进行安装

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

根据之前的操作,我们已经可以正常的启动 Hadoop 了,关于真正的集群我会在之后进行说明。现在我们来看一下第一个程序吧

1. 在 eclipse 上建立一个 java 项目

2. 将 /usr/hadoop/share/hadoop/common/hadoop-common-2.2.0.jar 文件导入到项目中

3. 将 /usr/hadoop/share/hadoop/common/lib/commons-logging-1.1.1.jar 文件导入到项目中

4. 编写代码如下

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


public class DFSOperator {/**
     * @param args
     */
    public static void main(String[] args) {Configuration conf = new Configuration();
        try {FileSystem fs = FileSystem.get(conf);
            Path f = new Path("hdfs:///dfs_operator.txt");
            FSDataOutputStream s = fs.create(f, true);
            int i = 0;
            for (i = 0; i < 100000; ++i)
                s.writeChars("test");
            s.close();} catch (IOException e) {e.printStackTrace();
        }
    }
}

5. 项目抓图

Hadoop 学习札记

6. 将项目导出成为 Jar 包 dfsOperator.jar,可以在如下地址下载

http://pan.baidu.com/share/link?shareid=3076182544&uk=2517512140

7. 将 Jar 包传输到 Linux 系统中,然后使用如下方法执行

7.1 查看是否存在 dfs_operator.txt 文件,如果存在需要先删除掉

hadoop fs -ls /

注明:如果要删除文件可以用如下命令 hadoop fs -rm /dfs_operator.txt

7.2 运行命令生成 dfs_operator.txt 文件

hadoop jar dfsOperator.jar DFSOperator

7.3 运行 7.1 的命令查看运行效果,如果增加了 dfs_operator.txt 文件,证明运行成功

上次的程序只是操作文件系统,本次运行一个真正的 MapReduce 程序。

 

运行的是官方提供的例子程序 wordcount,这个例子类似其他程序的 hello world。

 

1. 首先确认启动的正常:运行 start-all.sh

2. 执行 jps 命令检查:NameNode,DateNode,SecondaryNameNode,ResourceManager,NodeManager 是否已经启动正常。这里我遇到了一个问题,NodeManager 没有正常启动。错误信息如下:

2014-01-07 13:46:21,442 FATAL org.apache.Hadoop.yarn.server.nodemanager.containermanager.AuxServices: Failed to initialize mapreduce.shuffle
java.lang.IllegalArgumentException: The ServiceName: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.The valid service name should only contain a-zA-Z0-9_ and can not start with numbers
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.serviceInit(AuxServices.java:98)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.service.CompositeService.serviceInit(CompositeService.java:108)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.serviceInit(ContainerManagerImpl.java:218)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.service.CompositeService.serviceInit(CompositeService.java:108)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:188)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:338)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:386)

经过检查,是配置文件中有点错误,请修改 yarn-site.xml 文件,更改为如下内容(原因不明)

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

 

3. 准备数据:在 hadoop 文件系统中增加 input/file1.txt 和 input/file2.txt

[root@dbserver mapreduce]# hadoop fs -ls /input
Found 2 items
-rw-r--r--   1 root supergroup         12 2013-12-06 16:22 /input/file1.txt
-rw-r--r--   1 root supergroup         13 2013-12-06 16:22 /input/file2.txt
[root@dbserver mapreduce]# hadoop fs -cat /input/file1.txt
Hello World
[root@dbserver mapreduce]# hadoop fs -cat /input/file2.txt
Hello Hadoop

4. 例子程序的位置在:/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar

hadoop jar ./hadoop-mapreduce-examples-2.2.0.jar wordcount /input /output

画面输出内容

14/01/07 14:00:37 INFO client.RMProxy: Connecting to ResourceManager at localhost/127.0.0.1:8032
14/01/07 14:00:38 INFO input.FileInputFormat: Total input paths to process : 2
14/01/07 14:00:38 INFO mapreduce.JobSubmitter: number of splits:2
14/01/07 14:00:38 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class
14/01/07 14:00:38 INFO Configuration.deprecation: mapreduce.combine.class is deprecated. Instead, use mapreduce.job.combine.class
14/01/07 14:00:38 INFO Configuration.deprecation: mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.job.name is deprecated. Instead, use mapreduce.job.name
14/01/07 14:00:38 INFO Configuration.deprecation: mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class
14/01/07 14:00:38 INFO Configuration.deprecation: mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir
14/01/07 14:00:38 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1389074273046_0001
14/01/07 14:00:38 INFO impl.YarnClientImpl: Submitted application application_1389074273046_0001 to ResourceManager at localhost/127.0.0.1:8032
14/01/07 14:00:38 INFO mapreduce.Job: The url to track the job: http://dbserver:8088/proxy/application_1389074273046_0001/
14/01/07 14:00:38 INFO mapreduce.Job: Running job: job_1389074273046_0001
14/01/07 14:00:48 INFO mapreduce.Job: Job job_1389074273046_0001 running in uber mode : false
14/01/07 14:00:48 INFO mapreduce.Job:  map 0% reduce 0%
14/01/07 14:00:58 INFO mapreduce.Job:  map 100% reduce 0%
14/01/07 14:01:04 INFO mapreduce.Job:  map 100% reduce 100%
14/01/07 14:01:05 INFO mapreduce.Job: Job job_1389074273046_0001 completed successfully
14/01/07 14:01:05 INFO mapreduce.Job: Counters: 43
        File System Counters
                FILE: Number of bytes read=55
                FILE: Number of bytes written=236870
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=229
                HDFS: Number of bytes written=25
                HDFS: Number of read operations=9
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=2
        Job Counters
                Launched map tasks=2
                Launched reduce tasks=1
                Data-local map tasks=2
                Total time spent by all maps in occupied slots (ms)=15178
                Total time spent by all reduces in occupied slots (ms)=4384
        Map-Reduce Framework
                Map input records=2
                Map output records=4
                Map output bytes=41
                Map output materialized bytes=61
                Input split bytes=204
                Combine input records=4
                Combine output records=4
                Reduce input groups=3
                Reduce shuffle bytes=61
                Reduce input records=4
                Reduce output records=3
                Spilled Records=8
                Shuffled Maps =2
                Failed Shuffles=0
                Merged Map outputs=2
                GC time elapsed (ms)=108
                CPU time spent (ms)=2200
                Physical memory (bytes) snapshot=568229888
                Virtual memory (bytes) snapshot=2566582272
                Total committed heap usage (bytes)=392298496
        Shuffle Errors
                BAD_ID=0
                CONNECTION=0
                IO_ERROR=0
                WRONG_LENGTH=0
                WRONG_MAP=0
                WRONG_REDUCE=0
        File Input Format Counters
                Bytes Read=25
        File Output Format Counters
                Bytes Written=25

5. 查看运行结果:

[root@dbserver mapreduce]# hadoop fs -ls /output
Found 2 items
-rw-r--r--   1 root supergroup          0 2014-01-07 14:01 /output/_SUCCESS
-rw-r--r--   1 root supergroup         25 2014-01-07 14:01 /output/part-r-00000
[root@dbserver mapreduce]# hadoop fs -cat /output/part-r-00000
Hadoop  1
Hello   2
World   1

之前都是单节点进行的操作与测试,现在进行真正的多节点系统搭建

1. 准备系统与配置

共准备 4 台机器搭建 Hadoop 集群。基于 CentOS6.2,jdk1.6.0_31,Hadoop2.2.0 版本

192.168.1.132 NameNode Master132.Hadoop(Master)
192.168.1.110 DateNode Slave110.Hadoop(Slave)
192.168.1.141 DateNode Slave141.Hadoop(Slave)
192.168.1.131 DateNode Slave131.Hadoop(Slave)

2. 首先都分别对几台机器建立 Hadoop 用户

    groupadd hadoop  
    useradd -g hadoop hadoop  
    passwd hadoop

增加用户组和用户都是 hadoop,我这里设置的密码 111111

3. 分别使用 root 用户,安装 jdk 并进行设置

我这里 JDK 的安装路径是 /usr/java/jdk1.6.0_31

修改设置文件 /etc/profile,增加如下内容

export JAVA_HOME=/usr/java/jdk1.6.0_31/
export JRE_HOME=/usr/java/jdk1.6.0_31/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
为了使配置马上生效,请执行 source /etc/profile 命令

4. 修改 Hosts 文件,以便彼此可以访问

文件的内容如下:(注意,把原有的内容都删除掉,否则可能有问题,这个问题困扰我很久)

192.168.1.110 Slave110.Hadoop
192.168.1.141 Slave141.Hadoop
192.168.1.131 Slave131.Hadoop
192.168.1.132 Master132.Hadoop
5. 修改主机名

编辑 /etc/sysconfig/network 文件,修改其中的主机名

NETWORKING=yes
HOSTNAME=Master132.Hadoop
GATEWAY=192.168.1.1

这个步骤需要重启,可以通过 hostname Maseter132.Hadoop 命令直接修改主机名

每一台机器都需要修改,设置我们预期的主机名称

6. 修改 ssh 免密码连接的设置

编辑 /etc/ssh/sshd_config 文件,使如下的配置生效

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

重启服务 service sshd restart

7. 关闭防火墙

chkconfig iptables off

以上所有的操作都是在 root 权限下进行的,下面的操作主要是使用 hadoop 用户(除非是没有权限)

9. 设置 ssh 免密码连接

9.1 在 /home/hadoop 目录下,执行如下的命令

ssh-keygen -t rsa

多次回车之后,将会在 /home/hadoop/.ssl/ 目录下生产两个文件 id_rsa,id_rsa.pub

9.2 执行 如下命令

cat id_rsa.pub >> authorized_keys
chmod 600 ~/.ssh/authorized_keys(root 权限)

9.3 将所有的 Slave 节点的 id_rsa.pub 文件导入到 Master 节点的 authorized_keys 文件中

cat id_rsa.pub >> ~/.ssh/authorized_keys

9.4 使用同样的办法将 Master 节点的 id_rsa.pub 文件也导入到各个 Slave 节点的 authorized_keys 文件中

9.5 验证相互之间免密码连接是否成功:ssh Slave110.Hadoop 等命令

10. 安装 Hadoop(在 Master 机器上进行,root 权限)

10.1 使用之前已经编译好的文件:hadoop-2.2.0.tar.gz

10.2 解压安装在相同的路径,我安装的路径为 /usr/hadoop/

10.3 进行环境设置,修改 /etc/profile 文件,增加如下内容

export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

别忘了执行 source /etc/profile

10.4 修改安装路径的权限(将 hadoop 目录的读权限给 hadoop 组的 hadoop 用户)

chown –R hadoop:hadoop hadoop

11. 配置 Hadoop(在 Master 机器上进行,hadoop 权限)

11.1 修改 /usr/hadoop/libexec/hadoop-env.sh 文件,对 JAVA_HOME 进行明确指定
export JAVA_HOME=/usr/java/jdk1.6.0_31

11.2 修改 /usr/hadoop/etc/hadoop/core-site.xml

<configuration>
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master132.Hadoop:9000</value>
</property>
<property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/hadoop/tmp</value>
</property>

<property>
        <name>fs.default.name</name>
        <value>hdfs://Master132.Hadoop:8010</value>
</property>
</configuration>

11.3 修改 /usr/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Master132.Hadoop:9001</value>
</property>
<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/hadoop/dfs/name</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/hadoop/dfs/data</value>
</property>
<property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>3</value>  此处请注意,数值不能大于你的 Datanode 节点数 
</property>
</configuration>

11.4 修改 /usr/hadoop/etc/hadoop/mapred-site.xml

<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>Master132.Hadoop:10020</value>
</property>
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Master132.Hadoop:19888</value>
</property>
</configuration>

11.5 修改 /usr/hadoop/etc/hadoop/slaves

Slave110.Hadoop
Slave131.Hadoop
Slave141.Hadoop

12. 在 Slave 节点执行 10,11 步骤

可以将 Master 节点的配置直接拷贝到其它节点,然后执行 10 步的内容,完成全部设置

至此,所有的配置完成,下面可以启动一下系统

13. 在 Master 节点启动系统

13.1 运行如下命令进行格式化

hadoop namenode -format

13.2 正式启动 hadoop

start-all.sh

13.3 验证启动的结果,执行如下命令:

hadoop dfsadmin -report

基本上,如果几个 datenode 都正常就可以了!

如果过程中有问题,请到 /usr/hadoop/log 下面查看日志,寻找问题的线索

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计17025字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中