hadoop集群安装手记

本文记录了一次在192.168.197.81~83三台服务器上搭建Hadoop集群的过程,包括配置hosts、更新服务器主机名、安装JDK、设置环境变量、安装yum、配置Hadoop (hadoop-cdh3u6版) 以及Oozie的详细步骤。遇到的问题如端口冲突、目录已锁定等,以及解决办法也一并分享。
摘要由CSDN通过智能技术生成

俗话说,好记性不如烂笔头!在公司初次接触hadoop,搭建时所记。比较基础,看者勿喷!

以192.168.197.81~83 三台服务器为例

一、配置hosts

编辑/etc/hosts:

192.168.197.81 hadoop-zl-master.360buy.com

192.168.197.82 hadoop-zl-sl001.360buy.com

192.168.197.83 oozie-zl.360buy.com

二、更新服务器主机名

编辑/etc/sysconfig/network:

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=hadoop-zl-sl001.360buy.com

GATEWAY=192.168.232.1

三、上传程序包

1、可以使用从网络传,命令:

scp  /usr/local/java/  root@192.168.197.110:/usr/local/java/

2、如果无法使用scp命令,用rz命令上传至服务器

四、安装jdk

1、安装JDK

找到下载的JDK文件,先更改文件访问权限,如果没有root权限,sudo一下.

chmod 755 jdk-6u31-linux-x64-rpm.bin

./jdk-6u31-linux-x64-rpm.bin

当提示按回车键执行下一步时,会看到done字样,说明安装成功了。

安装完成后会在jdk-6u31-linux-x64-rpm.bin的当前目录下面发现几个*.rpm的包,没什么实际用处,可以使用rm–rf *.rpm 命令删除。

安装的java可以在/usr/java/这个目录里边找到。

2、配置环境变量

在/etc/profile文件后面加上下面内容

JAVA_HOME=/usr/java/jdk1.6.0_31

JRE_HOME=/usr/java/jdk1.6.0_31/jre

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

CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

添加完成后Esc一下,按:wq保存退出,执行重载环境变量命令source /etc/profile.

3、检查安装版本

查看javac版本:javac-version,就能看到已经是当前安装的版本的了.

再看一下java的版本:java-version,这里有可能还是旧版本,旧版本没删除,或 者删除的时候没删成功.这个也好办,将/usr/bin/java重新链接到/usr/java/jdk1.6.0_31/下的java上:

ln -fs /usr/java/jdk1.6.0_31/bin/java /usr/bin/java

-f表示强制 -s表示符号链接,有的也叫软连接.

可以使用 ll /usr/bin/java查看是否链接到指定文件上.

也可以先删除/usr/bin/java 文件,然后

ln -s /usr/java/jdk1.6.0_31/bin/java/usr/bin/java

上诉步骤执行完成之后,查看java版本发现java -version也显示了当前安装的版本号.

到这里linux下的java环境就搭建好了

五、安装yum

CentOS-Media.repo配置文件存放在/etc/yum.repos.d

CentOS-Media.repo配置文件中指定到公司内部安装文件的地址:

[base]

name=CentOS-$releasever - Base

baseurl=http://192.168.232.250/centos63/

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

执行 yum install redhat-lsb 命令

将自动完成安装yum过程

 

六、hadoop安装配置(hadoop-cdh3u6版)

安装包一般存放在/usr/local/java目录下。一般情况下部署规则如下

Master:

         hadoop-0.20-0.20.2+923.479-1.noarch.rpm

hadoop-0.20-namenode-0.20.2+923.479-1.noarch.rpm

hadoop-0.20-jobtracker-0.20.2+923.479-1.noarch.rpm

hadoop-0.20-secondarynamenode-0.20.2+923.479-1.noarch.rpm(可选)

Slaves:

         hadoop-0.20-0.20.2+923.479-1.noarch.rpm

         hadoop-0.20-datanode-0.20.2+923.479-1.noarch.rpm

         hadoop-0.20-tasktracker-0.20.2+923.479-1.noarch.rpm

 

安装后的安装文件及日志存放于/usr/lib/hadoop-2.0/下

1、hadoop安装

执行命令rpm –ivh 分别安装

hadoop-0.20-0.20.2+923.479-1.noarch.rpm

hadoop-0.20-namenode-0.20.2+923.479-1.noarch.rpm

hadoop-0.20-jobtracker-0.20.2+923.479-1.noarch.rpm

2、hadoop配置

Hadoop集群配置文件存放于/etc/hadoop-0.20/conf目录下

2.1、core-site.xml文件

<property>

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

                <value>hdfs://hadoop-zl-master.360buy.com:8020/</value>

       </property>

        <property>

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

               <value>/home/data/hadoop/cache/${user.name}</value>

       </property>

        <property>

               <name>hadoop.proxyuser.oozie.hosts</name>

                 <value>*</value>

        </property>

        <property>

                <name>hadoop.proxyuser.oozie.groups</name>

                 <value>*</value>

        </property>

 

        <property>

               <name>mapred.child.java.opts</name>

               <value>-Xmx1024m</value>

        </property>

       <property>

               <name>hadoop.native.lib</name>

                <value>true</value>

                <description>Shouldnative hadoop libraries, if present, be used.</description>

       </property>

2.2、hdfs-site.xml

<property>

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

               <value>/data/1/dfs/nn,/nfsmount/dfs/nn</value>

       </property>

       <property>

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

               <value>/data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>

       </property>

       <property>

               <name>dfs.replication</name>

                <value>3</value>

       </property>

       <property>

               <name>dfs.datanode.max.xcievers</name>

                <value>2048</value>

       </property>

       <property>

               <name>dfs.permissions</name>

               <value>false</value>

        </property>

2.3、mapred-site.xml

<property>

               <name>mapred.job.tracker</name>

               <value>hadoop-zl-master.360buy.com:8021</value>

                <description>The host andport that the Mapreduce job tracker runs

                at. If "local", thenjobs are run in-process as a single map and

                ruduce task.

                </description>

       </property>

       <property>

               <name>mapred.tasktracker.map.tasks.maximum</name>

                <value>8</value>

       </property>

       <property>

               <name>mapred.tasktracker.reduce.tasks.maximum</name>

                <value>8</value>

       </property>

        <property>

               <name>mapred.queue.names</name>

               <value>root,erpmerge,default,jdrebate</value>--队列名

       </property>

        <property>

               <name>mapred.child.java.opts</name>

               <value>-Xmx2048m</value>

        </property>

       <property>

               <name>mapred.local.dir</name>

                <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>

</property>

2.4、创建缓存区

Hdfs-site.xml文件中指定了:

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

<value>/data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>

Mapred-site.xml文件中指定了:

<name>mapred.local.dir</name>             

<value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>

则需要创建以上路径

1、  创建:

Mkdir /data/1/dfs/dn

Mkdir /data/1/mapred/local

Mkdir /data/2/dfs/dn

Mkdir /data/2/mapred/local

Mkdir /data/3/dfs/dn

Mkdir /data/3/mapred/local

 

2、  更改文件的权限

每个dn和local都需要更改:

chown mapred:hadoop local

chown dfs:hadoop dn

3、  使用ls –lah命令查看权限是否正确

 

2.5、启动集群

启动集群之前首先格式化集群:

/usr/lib/hadoop-2.0目录:执行bin/hadoopnamenode –format

 

在192.168.197.81 上执行:(主节点)

/etc/init.d/hadoop-0.20-jobtracker stop

/etc/init.d/hadoop-0.20-namenode stop

/etc/init.d/hadoop-0.20-jobtracker start

/etc/init.d/hadoop-0.20-namenode start

在从节点执行:

/etc/init.d/hadoop-0.20-tasktracker stop

/etc/init.d/hadoop-0.20-datanode stop

/etc/init.d/hadoop-0.20-tasktracker start

/etc/init.d/hadoop-0.20-datanode start

七、Oozie安装配置

1、tomcat安装/启动

直接拷贝tomcat安装包,放到/home下。

进入/home/apache-tomcat-6.0.28/bin目录,直接执行以下命令启动tomcat即可:

./ startup.sh

2、oozie安装配置(rpm格式)

2.1、oozie安装

先: rpm -ivh bigtop-utils-3.4.0+3-1.noarch.rpm

再: rpm -ivh oozie-client-2.3.2+27.30-1.noarch.rpm

再: rpm -ivh oozie-2.3.2+27.30-1.noarch.rpm

2.2、修改配置文件

在oozie-site.xml中配置数据库为mysql

 <property>

       <name>oozie.service.StoreService.jdbc.driver</name>

       <value>com.mysql.jdbc.Driver</value>

   </property>

   <property>

       <name>oozie.service.StoreService.jdbc.url</name>

       <value>jdbc:mysql://192.168.232.64:3306/oozie</value>

   </property>

   <property>

       <name>oozie.service.StoreService.jdbc.username</name>

       <value>oozie</value>

   </property>

   <property>

       <name>oozie.service.StoreService.jdbc.password</name>

       <value>oozie</value>

   </property>

  <property>

       <name>oozie.service.StoreService.pool.max.active.conn</name>

       <value>90,TestWhileIdle=true,TimeBetweenEvictionRunsMillis=100000,ValidationQuery=select1 from dual,initialSize=50,maxIdle=100</value>

       <description>

            Max number of connections.

       </description>

</property>

2.2控制台界面

将ext-2.2.zip放在/usr/lib/oozie/目录下,与bin平级,执行命令

sudo -u oozie bin/oozie-setup.sh -extjsext-2.2.zip

然后把mysql-connector-java-5.1.18.jar(mysql的JDBC)

放在/var/lib/oozie/oozie-server/webapps/oozie/WEB-INF/lib下,

启动oozie:

/etc/init.d/oozie stop

/etc/init.d/oozie start

 

 

 

3、oozie3.0以上版本安装介绍

3.1、maven安装

若安装3.0以上版本需要依赖maven。

1、首先到Maven官网下载安装文件,目前最新版本为3.1.1,下载文件为apache-maven-3.1.1-bin.tar.gz,下载可以使用wget命令;

 2、进入下载文件夹,找到下载的文件,运行如下命令解压

 tar-xvf  apache-maven-3.1.1-bin.tar.gz,

解压后的文件夹名为apache-maven-3.1.1

 3、使用mv命令将apache-maven-3.1.1文件夹拷贝到自己指定的文件夹,比如/usr/local/下

mv apache-maven-3.1.1 /usr/local/

 mvapache-maven-3.1.1 maven

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

MAVEN_HOME=/usr/local/maven

export MAVEN_HOME

export PATH=${PATH}:${MAVEN_HOME}/bin

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

source /etc/profile

 6、在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功

mvn –v

3.2、oozie3.2版本安装

1、去官网下载oozie-3.3.2.tar.gz并解压到到根目录下

获取文件“oozie-3.3.2”,放到目录“/”下。并重命名为oozie。

这个时候执行命令:bin/mkdistro.sh -DskipTests,则会报错。

原因是执行bin/mkdistro.sh -DskipTests时会自动下载一些依赖于POM的机制文件,但却找不到下载的仓库。

所以需要在/etc/hosts中添加 10.10.224.102 artifactory.360buy-develop.com ,这样就可以下载了,大概需要二十分钟左右。

但是因公司网络限制,下载失败,因此选择安装rpm格式低级版本。

八、错误总结

在集群安装过程中遇到过许多错误,在此简单总结一下

 

bin/hadoop namenode -format 初始化

初始化完毕后bin/hadoop namenode 启动namenode,

提示namenode未初始化,解决方法(还可以查看hadoop下的logs日志):

 ps-ef | grep namenode 查看是否有进程,若有则执行 kill -9 端口号杀掉之后再次尝试

———————————————————————————————————————

初始化时,报错:

Cannot lock storage /data/1/dfs/nn. Thedirectory is already locked

解决方法:

删除/data/1/dfs/nn下的。lock文件,若仍然提示,则删除该目录下的所有文件

报错:Cannot lock storage /nfsmount/dfs/nn. The directory is alreadylocked

解决方法同上

———————————————————————————————————————

初始化报错:

INFO ipc.Server: Stopping server on 8020

ERROR namenode.NameNode:java.net.BindException: Address already in use

8020端口号被占用

解决方法:

netstat -apn | grep 8020,把显示的端口号kill掉,ps -ef |grep namenode 或者 netstat -apn | grep 8020 查看没有显示的端口号即可

———————————————————————————————————————

若日志中显示replication字样的错误,有可能是/usr/lib/hadoop-0.20/conf/hdfs-site.xml 文件中dfs.replication配置不正确

可尝试把3改为当前集群中实际参与计算的slave数

———————————————————————————————————————

启动oozie job时,Error: HTTP error code: 500 : Internal Server Error

没找到原因,重装!

----------------------------------------

启动时报错:datanode 已死,但 pid 文件仍存

查看日志:unknown host: hadoop-test-master.360buy.com

查看配置文件中域名是否正确


综上,安装时遇到错误时应养成查看日志的习惯,跟着日志提示来逐步解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值