Hadoop集群搭建

来源:互联网 发布:网络维修基础知识 编辑:程序博客网 时间:2024/06/08 13:35

集群简介:
本集群中共有三台机器,分别是:
master 192.168.10.1
slave1 192.168.10.2
slave2 192.168.10.3,其中在启动hadoop后,master有namenode和datanode两个node进程,slave1和slave2只有一个node进程,就是datanode进程。

版本介绍:
linux CentOS-5.8-x86_64-bin-DVD-1of2
jdk jdk-6u45-linux-x64.bin
hadoop hadoop-2.6.0-64

搭建集群是在一台机器上完成hadoop的安装,然后进行复制,对副本进行些许修改后即成为hadoop集群。

一、部署过程
1、准备工作

1)配置IP,修改虚拟机网络选项

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改内容

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.10.1(192.168.10.2或者192.168.10.3)
NETMASK=255.255.255.0
GATEWAY=192.168.10.253

立即生效

service network restart

2)修改当前机器名称

vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=master(slave1,slave2)

重启生效

3)配置hosts文件

vi /etc/hosts

192.168.10.1 master
192.168.10.2 slave1
192.168.10.3 slave2

检查: ping master

4)修改虚拟机网络选项
仅主机host-only 适配器

5)安装jdk
使用filezilla.exe软件,用root用户上传,上传至/usr/local

# cd /usr/local/

修改权限(因为本人上传文件为jdk-6u45-linux-x64.bin,若为.tar.gz可直接解压)

 #chmod 700 jdk-6u45-linux-x64.bin      

安装jdk

#./jdk-6u45-linux-x64.bin

创建软连接

ln -s /usr/local/jdk1.6.0_45  /usr/local/jdk

修环境变量

# touch /etc/profile.d/java.sh# vi /etc/profile.d/java.sh

修改内容:

export JAVA_HOME=/usr/local/jdk
export PATH=PATH:JAVA_HOME/bin

使环境变量立即生效

source /etc/profile

2、安装hadoop
1)创建使用hadoop的用户帐户

# /usr/sbin/groupadd hadoop         # /usr/sbin/useradd hadoop -g hadoop

2)设置密码

# passwd hadoophadoop

3)创建hadoop工作目录/数据目录

 mkdir -p /application/hadoop mkdir -p /data/hadoop mkdir -p /data/hadoop/hdfs/name mkdir -p /data/hadoop/hdfs/data mkdir -p /data/hadoop/hdfs/namesecondary mkdir -p /data/hadoop/hdfs/tmp  mkdir -p /data/hadoop/mapred/mrlocal mkdir -p /data/hadoop/mapred/mrsystem mkdir -p /data/hadoop/hdfs/journal/ mkdir -p /data/hadoop/zoo mkdir -p /data/hadoop/mapred/mrlocal mkdir -p /data/hadoop/mapred/logs chown -R hadoop:hadoop /data/hadoop chown -R hadoop:hadoop /application/hadoop

4)使用filezilla软件,hadoop用户,上传hadoop-2.6.0-64.tar.gz,路径为/application/hadoop
解压文件

# tar -zxvf hadoop-2.6.0-64.tar.gz

创建软连接

# ln -s  /application/hadoop/hadoop-2.6.0  /application/hadoop/hadoop

5)修改配置文件
配置文件路径为/application/hadoop/hadoop/etc/hadoop

共需要配置7个文件:
hadoop-env.sh 修改JAVA_HOME
yarn-env.sh 修改JAVA_HOME
Slaves 增加slave节点,设为master,slave1,slave2
core-site.xml 增加hadoop核心配置,设置hdfs文件端口(9000)和路径
hdfs-site.xml 增加hdfs配置信息,设置namenode、datanode端口和目录位置
mapred-site.xml 增加mapreduce配置,使用yarn框架、jobhistory使用地址以及web地址
yarn-site.xml 增加yarn功能

6)配置环境变量

vi /etc/profile.d/java.sh

修改内容:

export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/application/hadoop/hadoop
export HADOOP_PREFIX=/application/hadoop/hadoop
export PATH=JAVAHOME/bin:HADOOP_HOME/bin:$PATH

立即生效

source /etc/profile

检查:

echo $JAVA_HOMEecho $HADOOP_HOME

3、其他配置
1)关闭防火墙

# service iptables stop# chkconfig iptables stop# iptables -F# /etc/init.d/iptables save# vi /etc/selinux/configSELINUX=disabled

2)设置ssh登录
注意:使用hadoop用户登录,关闭putty,重新登录。

$ cd /home/hadoop$ mkdir .ssh$ chmod 755 .ssh$ cd .ssh$ ssh-keygen -t rsa -P ''

//询问保存路径时直接[按回车]采用默认路径

$ cat id_rsa.pub  >> authorized_keys$ chmod 600 authorized_keys

测试:远程登录创建目录

ssh masterexit

若能成功登录,则设置成功。

4、复制工作
1)关闭虚拟机,复制两份
2)打开副本虚拟机,设置IP和hostname
修改Linux主机名

vi /etc/sysconfig/networkHOSTNAME=slave1(slave2)

修改IP

vi /etc/sysconfig/network-scritps/ifcfg-eth0IPADDR=192.168.10.2192.168.10.3#HWADDR 注释此行

删除一个文件,若没有则可忽略。

rm -rf /etc/udev/rules.d/70-persistent-net.rules

随后进行重启。

5、启动hadoop集群
1)在启动集群前,首先要将namenode 初始化,现在master上执行此语句,在通过远程登录到slave1和slave2,进程初始化。

$ /application/hadoop/hadoop/bin/hdfs namenode -format

2)随后就可启动hadoop集群,按顺序执行下列语句:

/application/hadoop/hadoop/sbin/start-dfs.sh/application/hadoop/hadoop/sbin/start-yarn.sh

3)可通过jps来检验进程是否全都启动,也可通过http://192.168.10.1:50070或者http://192.168.10.1:8080检验。
master中的进程:
这里写图片描述

slave1中的进程:
这里写图片描述

Slave2中的进程:
这里写图片描述

http://192.168.10.1:8088验查结果:
这里写图片描述

这里写图片描述

http://192.168.10.1:50070验查结果:
这里写图片描述

这里写图片描述

6、停止hadoop hdfs集群
按顺序执行下列语句可停止集群。

/application/hadoop/hadoop/sbin/stop-yarn.sh/application/hadoop/hadoop/sbin/stop-dfs.sh 

二、部署之后运行测试程序
在hdfs创建目录

$  /application/hadoop/hadoop/bin/hadoop fs -mkdir /input 

将dada文件上传到input目录下(下列语句为一行)

$ /application/hadoop/hadoop/bin/hadoop fs -put  /application/hadoop/hadoop/test_data/data  /input 

可查看data内容

$  /application/hadoop/hadoop/bin/hadoop fs -cat /input/data 

执行测试程序(下列语句为一行)

/application/hadoop/hadoop/bin/hadoop   jar     /application/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input  /output

三、部署过程中遇到的问题
1)在启动hadoop时,出现了错误,截图如下:
这里写图片描述

由日志中得到原因是因为datanode和namenode的clusterID不匹配,在hdfs-site.xml中配置了datanode和namenode对应的目录,在对应目录下打开current文件夹里的VERSION文件,可以看到各自对应的clusterID的确不一致。出现此现象的原因是因为在三台机器完成配置后,各自格式化了namenode一次,然后启动hadoop集群之后又再次格式化了namenode。解决办法就是将全部datanode对应的目录删除掉,重新启动dfs即可。

0 0
原创粉丝点击