俗话说,好记性不如烂笔头!在公司初次接触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
查看配置文件中域名是否正确
综上,安装时遇到错误时应养成查看日志的习惯,跟着日志提示来逐步解决。