PHP框架Difeye支持Hadoop配置系列一:安装Hadoop

第一章 安装Hadoop

1.1.集群环境介绍

文章来源: http://www.difeye.com

三个节点上有创建一个用户hadoop,密码相同以hadoop用户登录系统

useradd   hadoop

passwd   hadoop

su - hadoop

 

 

         集群包含三个节点:1namenode2datanode,节点之间局域网连接,可以相互ping通。节点IP地址如下:

Namenode:192.168.0.11

Datanode1:192.168.0.12

Datanode2:192.168.0.13

三台机器均为centos5.5,有相同的用户root(具有管理员权限),在/usr/hadoop/目录下,用于存放hadoop-1.0.4安装文件

 

在/etc/hosts 上添加主机名和相应IP地址:

192.168.0.11 hadoop.namenode.master

192.168.0.12 hadoop.datanode.slave1

192.168.0.13 hadoop.datanode.slave2

 

1.2. SSH无密码验证配置

 

 

         Hadoop需要使用SSH协议,namenode使用SSH无密码登录并启动datanode进程,同样原理,datanode上也能使用SSH无密码登录到namenode(这样也能在datanode上进行启动或关闭hadoop

 

1.       安装和启动SSH协议

所有机器安装SSH协议并启动服务,在所有机器上root执行以下命令:

sudo yum install ssh

sudo yum install rsync   

##ssh sudo /etc/init.d/ssh restart

 

(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间文件)

 

         命令执行完,各台机器之间可以通过密码验证相互登录。

 

2.配置Namenode无密码登录所有Datanode

         (1) 原理

         Namenode作为客户端,要实现无密码公钥认证,连接到服务器端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到dtanode上,档namenode通过SSH连接dtanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenodeNamenode收到加密数之后再用私钥进行解密,并将解密数回传给datanodedatanode确认解密数无误之后就允许namenode进行连接了。这是公钥认证过程,重要过程是将客户端namenode的公钥复制到datanode上。

         (2)Namenode机器上生成密码对

         namenode上执行以下命令(hadoop用户)

[hadoop@test11 ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):

Created directory '/home/hadoop/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/hadoop/.ssh/id_rsa.

Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

47:98:bd:31:b1:36:ff:1c:84:ce:b2:b5:26:05:01:bb root@test11

这将在/root/.ssh目录下生成一个私钥id_rsa和一个公钥id_rsa.pub

需要把公钥拷到所有datanode节点的/home/hadoop/authorized_keys这个文件中(包括自己本身,保证ssh登录自己时也不需要密码)。要正确设置authorized_key的权限为644,不然还是不 行,

 

namenode节点做如下配置

cd /home/hadoop/.ssh

cp id_rsa.pub authorized_keys  

(namenode的公钥)

chmod 644 /home/hadoop/.ssh/authorized_keys

 

使用SSH协议将namenode的公钥信息authorized_keys复制到所有Datanode的/root/.ssh目录下

scp authorized_keys hadoop@192.168.0.12:/home/hadoop/.ssh

scp authorized_keys hadoop@192.168.0.13:/home/hadoop/.ssh

这样配置后,namedata可以无密码登录所有datanode,可通过命令“ssh节点ip地址”来验证

 

 

3.配置datanode无密码登录namenode

 

namenode无密码登录所有datanode一样,把datanode的公钥复制到namenode/root/.ssh目录下,追加到authorized_keys文件

#ssh-keygen -t rsa

 

 

 

【注】整个过程只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上须知namenode上编辑配置文件vi /etc/ssh/sshd_config开启公钥验证

RSAAuthentication yes

PubkeyAuthentication yes

 

1.3. JDK安装和Java环境变量配置

 

Java环境变量配置

SUN公司http://java.sun.com/javase/downloads/index.jsp下载Java SUN JDK(.rpm .bin) 我下载的是jdk-6u37-linux-x64-rpm.bin 64位,所有机器安装jdk

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

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

Jdk默认安装在/usr/java/jdk1.6.0_37

 

vi /etc/profile

 

export JAVA_HOME="/usr/java/jdk1.6.0_37"

export JRE_HOME="/usr/java/jdk1.6.0_37/jre"

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

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

保存并退出

#source /etc/profile

执行完毕,“java -version”可以判断是否成功

 

 

 

Hadoop集群配置

上传hadoop-1.0.4.tar.gz /usr/hadoop

tar -zxvf hadoop-1.0.4.tar.gz

 

然后在hadoop下创建tmp文件夹,并把hadoop的安装路径添加到/etc/profile中:

export HADOOP_HOME=/usr/hadoop/hadoop-1.0.4

export PATH=$HADOOP_HOME/bin:$PATH

保存并退出

#source /etc/profile

 

编辑hadoop配置文件

/usr/hadoop/hadoop-1.0.4/conf下

#vi /usr/hadoop/hadoop-1.0.4/conf/hadoop-env.sh

末位加入

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

 

三个配置文件:core-site.xml  hdfs-site.xml   mapred-site.xml

 

 

配置core-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

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

<value>/usr/hadoop/tmp</value>

<description></description>

</property>

<property>

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

<value>hdfs://192.168.0.11:9000</value>

</property>

</configuration>

fs.default.name是NameNode的URI。hdfs://主机名:端口/

 

 

配置hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

Replication是数据副本数量,默认3,datanode少于3台就会报错

 

配置mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

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

<value>http://192.168.0.11:9001</value>

</property>

</configuration>

 

配置masters文件,加上namenode的IP地址

192.168.0.11

 

配置slaves文件,加上datanode的IP地址

192.168.0.12

192.168.0.13

 

namenode上配置好的hadoop文件夹复制到datanode/usr/hadoop/目录下。记得在datanode上修改/etc/profile文件

export HADOOP_HOME=/usr/hadoop/hadoop-1.0.4

export PATH=$HADOOP_HOME/bin:$PATH

保存并退出

#source /etc/profile

 

退出hadoop用户,切换root

chown -R hadoop:hadoop /usr/hadoop

hadoop文件夹赋权

 

启动Hadoop集群

su - hadoop

在namenode格式化hadoop

cd /usr/hadoop/hadoop-1.0.4/bin

hadoop namenode -format

start-all.sh

 

每次修改xml配置文件都要格式化

 

启动hadoop成功后,在namenode中的tmp文件夹中生成了dfs文件夹,在datanode中的tmp文件夹中生成了dfs和mapred文件。

 

在namenode上用java自带的工具jps查看进程:

#/usr/java/jdk1.6.0_37/bin/jps

在namenode上查看集群状态:

hadoop dfsadmin -report

如遇权限问题可重新 chown -R hadoop:hadoop /usr/hadoop

 

 

stop-all.sh

停止所有hadoop服务

 

【注】datanode tmp数据路径权限必须为755,

chmod -R  755 /usr/hadoop/tmp


文章来源:http://www.difeye.com

你可能感兴趣的:(PHP框架Difeye支持Hadoop配置系列一:安装Hadoop)