Hadoop配置及映射本地磁盘

试验网络结构

master.hadoop192.168.122.2master

node1.hadoop192.168.122.3 (slave)

node2.hadoop192.168.122.4 (slave)

node3.hadoop192.168.122.5 (slave)

chkpoint.hadoop 192.168.122.7(SecondaryNamenode)

系统环境

Centos6.2 32bit

所有服务器关闭iptablesselinux

设置新主机名(所有机器)

#hostnamenewhostname

#vim /etc/sysconfig/network 修改主机名

#vi /etc/hosts 中增加对应的解析

配置SSHroot用户无密码登陆

配置master无密码登陆slave

检查是否安装opensshrsync

#rpm –qa|grep openssh

#rpm –qa|grep rsync

如果没有安装,运行下面命令安装

安装ssh

#yum install  openssh -y

安装rsync

#yum install rsync –y

masterroot用户下运行

#ssh-keygen -t rsa -P ''

询问路径默认回车,生成的密钥在当前用户的根目录

/root/.ssh

里面有id_rsa 私钥

id_rsa.pub公钥

将公钥id_rsa.pub内容追加到授权key里面去

#cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

(注:authorized_keys文件权限设置为600

配置slave

检查是否安装opensshrsync

#rpm –qa|grep openssh

#rpm –qa|grep rsync

如果没有安装,运行下面命令安装

安装ssh

#yum install ssh -y

安装rsync

#yum install rsync –y

slaveroot用户下运行

#ssh-keygen -t rsa -P ''

询问路径默认回车,生成的密钥在当前用户的根目录

/root/.ssh

里面有id_rsa 私钥

id_rsa.pub公钥

master上生成的/root/.ssh/authorized_keys上传到slave/root/.ssh/

修改slavemaser/etc/ssh/sshd_config

启用下面三个参数

RSAAuthentication yes 

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

配置slave无密码登陆master

slave公钥id_rsa.pub内容追加到授权key里面去

#cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 并将authorized_keys上传到master/root/.ssh/中。

配置JAVA环境(所有节点)

下载jdk-7u25-linux-i586.rpm

安装JDK

#rpm -ivh jdk-7u25-linux-i586.rpm

#vi /etc/profile

默认添加

export JAVA_HOME=/usr/java/jdk1.7.0_25

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

运行#source /etc/profile 使其生效

设置hadoopmaster

下载hadoop-1.2.0.tar.gzroot并解压

#tar zxvf hadoop-1.2.0.tar.gz

将解压后的目录hadoop-1.2.0.tar.gz重命名为hadoop

编辑/etc/profile添加环境变量

export HADOOP_HOME=/root/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

编辑hadoop/conf/hadoop-env.sh

设置export JAVA_HOME=/usr/java/jdk1.7.0_25

编辑conf/core-site.xml

/data/目录需要提前创建,hadoop.tmp.dir不设置的话,默认在/tmp/hadoop-hadoop,这样每次重启都会tmp被删除,必须重新执行format才可以使用否则出错

<configuration>

<property>

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

<value>/data/tmp</value>

</property>

<property>

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

<value>hdfs://master.hadoop:9000</value>

</property>

<!--checkpoint周期,单位秒-->

<property>

<name>fs.checkpoint.period</name>

<value>60</value>

</property>

</configuration>

编辑hdfs-site.xml

Hdfs的心跳超时时间=2* heartbeat.recheck.interval + 10* dfs.heartbeat.interval

注:heartbeat.recheck.interval 单位ms

dfs.heartbeat.interval 单位s

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.block.size</name>

<value>134217728</value>

</property>

<property>

<name>dfs.heartbeat.interval</name>

<value>5</value>

</property>

<property>

<name>heartbeat.recheck.interval</name>

<value>5000</value>

</property>

<!--如果SecondaryNamenodemaster不是通服务器,需要同步就要设置下面选项-->

<property>

<name>dfs.secondary.http.address</name>

<value>chkpoint.hadoop:50090</value>

</property>

</configuration>

编辑mapred-site.xml

<configuration>

<property>

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

<value>master.hadoop:9001</value>

</property>

</configuration>

设置SecondaryNamenode

不设置无法同步

secondaryNamenode不是namenode的热备,只是namenode的备份。

core-site.xml配置和master(namenode)一样

编辑hdfs-site.xml

<configuration>

<property>

<name>dfs.http.address</name>

<value>master.hadoop:50070</value>

</property>

</configuration>

 

配置conf/masters文件,删除文件中的localhost(复制到slave服务器)

在文件中加入secondary namenode的主机名或者IP

 

配置conf/slaves文件,删除文件中的localhost(只有master服务器有

在文件中加入slave 的主机名或者IP,一行一个。

 

设置hadoopslave

下载hadoop-1.2.0.tar.gzroot并解压

#tar zxvf hadoop-1.2.0.tar.gz

将解压后的目录hadoop-1.2.0.tar.gz重命名为hadoop

编辑/etc/profile添加环境变量

export HADOOP_HOME=/root/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

编辑hadoop/conf/hadoop-env.sh

设置export JAVA_HOME=/usr/java/jdk1.7.0_25

编辑conf/core-site.xml

/data/目录需要提前创建,hadoop.tmp.dir不设置的话,默认在/tmp/hadoop-hadoop,这样每次重启都会tmp被删除,必须重新执行format才可以使用否则出错

<configuration>

<property>

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

<value>/data/tmp</value>

</property>

</configuration>

编辑mapred-site.xml

<configuration>

<property>

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

<value>master.hadoop:9001</value>

</property>

</configuration>

Hadoop管理和使用

使用前需要先格式化

master上执行

#hadoop namenode –format hdfs进行格式化

如果没有报错就可以启动hadoop

#start-all.sh

查看各个节点状态

#hadoop dfsadmin –report

Webdav配置

Webdav可以让服务器将hdfs映射为本地磁盘

为了节省节点,试验时webdavmaster上配置,也可以在单独机器上配置

服务器需要安装jdk

下载apache-tomcat-6.0.37.zip解压到/root

#unzip apache-tomcat-6.0.37.zip

下载hdfs-webdav.war/root/apache-tomcat-6.0.37/ webapps

tomcatHTTP端口修改为80

编辑/root/apache-tomcat-6.0.37/conf/server.xml

找到

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

8080改为80

启动tomcat

默认启动脚本都没有执行权限,先给tomcat的脚本赋执行权限

#cd /root/apache-tomcat-6.0.37/bin

#chmod +x *.shsh结尾的都是linux的管理脚本,batwindows的管理脚本

运行

#/root/apache-tomcat-6.0.37/bin/startup.sh启动tomcat

启动后hdfs-webdav.war会自动部署为hdfs-webdav

停止

#/root/apache-tomcat-6.0.37/bin/shutdown.sh

停止后将

/root/apache-tomcat-6.0.37/webapps/hdfs-webdav.war删除,防止下次启动自动解压覆盖配置

设置hdfs-webdav

默认hdfs-webdavhadoop-0.18.1-core.jar版本低,用当前hadoop的驱动替换hdfs-webdav中的

删除hadoop-0.18.1-core.jar

#rm –f /root/apache-tomcat-6.0.37/webapps/hdfs-webdav/WEB-INF/lib/hadoop-0.18.1-core.jar

复制hadoop-core-1.2.0.jarwebdav

#cp /root/hadoop/hadoop-core-1.2.0.jar /root/apache-tomcat-6.0.37webapps/hdfs-webdav/WEB-INF/lib/

编辑hdfs-webdav配置文件

#cd /root/apache-tomcat-6.0.37/webapps/hdfs-webdav/WEB-INF/classes

#vi hadoop-site.xml

修改为

<property>

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

<value>hdfs://master.hadoop:9000/</value>

<description>namenode</description>

</property>

启动tomcat

#/root/apache-tomcat-6.0.37/bin/startup.sh

编译安装davfs2(在需要挂载hdfs的服务器上安装)

服务器需要安装gcc gcc-c++

#yum install gcc gcc-c++ -y

安装make

#yum install make –y

安装fuse

./configure

#make

#make install

编译neon前需要安装下面依赖包

#yum install expat expat-devel –y

安装zlib

#yum install zlib zlib-devel

编译安装neon

#./configure

#make

#make install

安装davfs2-1.4.7

./configure

#make

#make install

添加davfs2用户和组

#useradd davfs

测试挂载

#mount –t davfs http://tomcat服务器的IP:/hdfs-webdav /mnt

提示:(直接回车)

http://192.168.122.2/hdfs-webdav or hit enter for none.

Username: 

Please enter the password to authenticate userwith server

http://192.168.122.2/hdfs-webdav or hit enter for none.

Password:

#df –h就可以看到刚挂载的hdfs分区,就可以像使用本地磁盘一样使用HDFS