Censtos Hadoop安装

本文是在centos6上安装hadoop成功后,写的一个安装手册,适用于有linux基本操作知识的人群。

1准备工作

本文使用的系统是CentOS-6.2-i386-minimal版;准备三台虚拟机,一台为hadoop-namenode,另外两台作为hadoopdatanode01,hadoopdatanode02;

下载:jdk-6u35-linux-i586-rpm.bin 36443.html

 

http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-18

hadoop-1.0.3.tar.gz

http://www.apache.org/dyn/closer.cgi/hadoop/common/

本文安装中不做特殊说明的均为hadoop-namenode机器。

1.1配置网络

登录linux系统修改网络配置:

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

A、动态IP配置(建议使用静态ip为好)

修改为:ONBOOT=yes

添加  : BOOTPROTO=dhcp

 

B、静态IP配置(红色字体为必须配置项,其他可省略)

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet       #网卡类型

HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址

DEVICE=eth0         #网卡接口名称

ONBOOT=yes          #系统启动时是否自动加载

BOOTPROTO=static    #启用地址协议 --static:静态协议 --bootp协议--dhcp协议

IPADDR=192.168.1.11      #网卡IP地址

NETMASK=255.255.255.0    #网卡网络地址

GATEWAY=192.168.1.1      #网卡网关地址

DNS1=10.203.104.41       #网卡DNS地址

BROADCAST=192.168.1.255  #网卡广播地址

1.2设置域内安装代理(仅安装hadoop此步可以跳过)

因为CentOS-6.2-i386-minimal版是精简版,很多需要的工具和软件没有安装,根据需要安装;因此需要借助internet。如果仅是安装hadoop不做其他应用可以省略本节,配置一下以后有安装工具需求会很方便。

#vi /etc/yum.conf

添加如下内容到yum.conf中,其中proxy_username为您的域账号名,proxy_password为密码(是明码)

 

配置完成。

现在安装一个下载工具wget测试一下:

# yum install wget

1.3配置ssh实现无密码访问(即公私钥访问)

该部分网络上和书籍中都有介绍,但是照做发现基本不成功(Centos),本文做了一下整理。

1.3.1添加hadoop用户

# groupadd hadoop        创建hadoop用户组

# useradd -g hadoop hadoop 添加用户hadoop到组

# passwd hadoop          设置用户hadoop权限

Changing password for user hadoop.

New password:                                    输入密码

BAD PASSWORD: it is too simplistic/systematic

BAD PASSWORD: is too simple

Retype new password:                              再次输入密码

passwd: all authentication tokens updated successfully.    成功了

2认证登录配置

2.1修改配置文件

2.1.1修改ssh配置

$ vi /etc/ssh/sshd_config

找到以下内容,并去掉注释符”#

ServerKeyBits 1024

 

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

修改后保存;然后重新启动ssh服务

[root@ namenode ~]# service sshd restart

2.1.2修改hosts配置文件

hadoop-namenode上的hosts修改如下:

#vi /etc/hosts

添加

192.168.1.110 hadoop-namenode

192.168.1.111 hadoopdatanode01

192.168.1.112 hadoopdatanode02

 

注:# vi /etc/sysconfig/network 中的HOSTNAME= hadoop-namenode

 

hadoop-hadoopdatanode01上的hosts修改如下:

#vi /etc/hosts

添加

192.168.1.111 hadoopdatanode01

192.168.1.110 hadoop-namenode

 

注:# vi /etc/sysconfig/network 中的HOSTNAME= hadoopdatanode01

 

 

hadoop-hadoopdatanode02上的hosts修改如下:

#vi /etc/hosts

添加

192.168.1.112 hadoopdatanode02

192.168.1.110 hadoop-namenode

注:# vi /etc/sysconfig/network 中的HOSTNAME= hadoopdatanode02

 

 

2.2生成证书公私钥:

切换到hadoop用户

[root@ hadoop-namenode ~]#  su – hadoop

 

#  ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa


#cat ~/.ssh/id_dsa.pub>> ~/.ssh/authorized_keys

 

修改权限:

chmod 600 ~/.ssh/authorized_keys

测试登陆如下: $ ssh localhost
Last login: Wed Jul 13 14:04:06 2011 from hadoopdatanode01

如果让你输入密码说明配置失败。

2.3 认证登陆远程服务器

首先,在hadoopdatanode01,hadoopdatanode02上按照 “1.3.1添加hadoop用户“节添加组和用户;

其次,按照“1.3.2修改配置文件“章节修改hadoopdatanode01,hadoopdatanode02上的配置文件。

最后,创建.ssh文件夹。

创建文件夹:

# su – hadoop      切换到hadoop用户

#mkdir .ssh        创建.ssh文件夹

然后将1.3.3节成的authorized_keys拷贝到hadoopdatanode01,hadoopdatanode02上刚刚创建的.ssh文件夹。

#scp /home/hadoop/.ssh/authorized_keys hadoop@hadoopdatanode01:/home/hadoop/.ssh/authorized_key

需要你输入hadoopdatanode01上hadoop用户的密码。

 

拷贝到hadoopdatanode02上同上。

3安装hadoop

3.1安装jdk

本文安装的是jdk-6u35-linux-i586-rpm.bin

拷贝jdk-6u35-linux-i586-rpm.bin到linux机器的 /opt目录下

在root账户下/op0074目录下安装

#chmod +x  jdk-6u35-linux-i586-rpm.bin

#./jdk-6u35-linux-i586-rpm.bin

#rpm –ivh jdk-6u35-linux-i586.rpm

安装完毕

3.2在hadoop-namenode上安装hadoop

   本文使用的是hadoop-1.0.3版本,将hadoop-1.0.3.tar.gz拷贝到/home/hadoop目录下。

#chown hadoop:hadoop hadoop-1.0.3.tar.gz  修改文件拥有者

#su – hadoop                           切换用户

# tar –zxvf  hadoop-1.0.3.tar.gz            解压

3.3修改配置文件

3.31 修改机器环境

# su - root

# vi /etc/profile

在文件尾部添加:

export JAVA_HOME=/usr/java/jdk1.6.0_35

export JRE_HOME=/usr/java/jdk1.6.0_35/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/home/hadoop/hadoop-1.0.3

export PATH=$HADOOP_HOME/bin:$PATH

 

3.3.2 修改hadoop配置文件

红色部分根据自己的机器名修改。

#su – hadoop                切换hadoop目录

#mkdir tmp                  创建tmp目录,以后的文件系统目录

# cd hadoop/hadoop-1.0.3/conf  进入配置文件目录

 

3.3.2.1编辑环境配置文件

#vi  hadoop-env.sh           

在尾部添加

export JAVA_HOME=/usr/java/jdk1.6.0_35

 

3.3.2.2编辑core-site.xml

# vi core-site.xml             

 

     hadoop.tmp.dir

     /home/hadoop/tmp

     A base for other temporary directories.

 

 

     fs.default.name

     hdfs://hadoop-namenode:9000

 

3.3.3.3编辑 mapred-site.xml

# vi mapred-site.xml

mapred.job.tracker

hadoop-namenode:9001

3.3.3.4编辑 hdfs-site.xml

# vi hdfs-site.xml

 

   dfs.replication

   2

 

3.3.3.5 编辑masters

#vi master

加入:

hadoop-namenode

3.3.3.6 编辑slaves

#vi slaves

加入:

hadoopdatanode01

hadoopdatanode02

3.4 配置hadoopdatanode01、hadoopdatanode02

       将/home/hadoop/hadoop-1.0.3复制到hadoopdatanode01和hadoopdatanode02的/home/hadoop目录下。

#scp –rv /home/hadoop/hadoop-1.0.3 hadoop@ hadoopdatanode01:/home/hadoop/

 

#scp –rv /home/hadoop/hadoop-1.0.3 hadoop@ hadoopdatanode02:/home/hadoop/

4 关闭防火墙

三台机器都需要关闭防火墙,如果知道端口,打开端口也可以,本文是直接关闭防火墙,需在root用户下操作

#service iptables stop

5运行hadoop

5.1格式化HDFS文件系统

# su – hadoop

$ cd hadoop-1.0.3

$ bin/hadoop namenode -format

 

5.2启动hadoop

$bin/start-all.sh

 

 

检查启动是否成功:

$jps

 

检查是否初始化成功

$ bin/hadoop fs -ls /

 

安装成功。

6验证

6.1 文件测试

$bin/hadoop fs –mkdir input    创建目录 input

$bin/hadoop fs –lsr

 

###把本地hadoop-core-1.0.3.jar上传到input中

#bin/hadoop fs -put hadoop-core-1.0.3.jar input 

#bin/hadoop fs -lsr            ###查看本件系统所有文件 

    

存在文件并且大小不为0则hadoop文件系统搭建成功。 

6.2 Web查看

Ie中输入http://192.168.1.110:50070/dfshealth.jsp

 

7安装遇见问题

7.1 safemode

bin/hadoop fs -put ./input input

put: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/input. Name node is in safe mode.

 

解决方法:

NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。

dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。

下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)

The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 18 seconds.

hadoop dfsadmin -safemode leave

有两个方法离开这种安全模式

(1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。

(2)hadoop dfsadmin -safemode leave命令强制离开

用户可以通过dfsadmin -safemode value  来操作安全模式,参数value的说明如下:

enter - 进入安全模式

leave - 强制NameNode离开安全模式

get -  返回安全模式是否开启的信息

wait - 等待,一直到安全模式结束。

 

7.2could only be replicated to 0 nodes, instead of 1

#执行 fs -put时,出现如下问题

hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop

.ipc.RemoteException: java.io.IOException: ... could only be replicated to 0 nodes, instead of 1 ...

 

解决方法:

(1)防火墙原因

(2)磁盘空间原因

df –ah  #查看磁盘空间

如果是磁盘空间不够,则调整磁盘空间(我就是该原因,折腾了很久) 。

3、DataNode error

 

  代码

2010-06-25 11:40:12,473 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:

java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-root/dfs/data:

namenode namespaceID = 647870650; datanode namespaceID = 466015089

 解决方法:

删除 /tmp/hadoop-root/dfs目录下的所有目录,

执行hadoop namenode -format

转载于:https://www.cnblogs.com/duxp/archive/2013/01/26/hadoop.html

你可能感兴趣的:(Censtos Hadoop安装)