Hadoop配置及映射本地磁盘
试验网络结构
master.hadoop192.168.122.2(master)
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
所有服务器关闭iptables和selinux
设置新主机名(所有机器)
#hostnamenewhostname
#vim /etc/sysconfig/network 修改主机名
#vi /etc/hosts 中增加对应的解析
配置SSH以root用户无密码登陆
配置master无密码登陆slave
检查是否安装openssh和rsync
#rpm –qa|grep openssh
#rpm –qa|grep rsync
如果没有安装,运行下面命令安装
安装ssh
#yum install openssh -y
安装rsync
#yum install rsync –y
在master的root用户下运行
#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
检查是否安装openssh和rsync
#rpm –qa|grep openssh
#rpm –qa|grep rsync
如果没有安装,运行下面命令安装
安装ssh
#yum install ssh -y
安装rsync
#yum install rsync –y
在slave的root用户下运行
#ssh-keygen -t rsa -P ''
询问路径默认回车,生成的密钥在当前用户的根目录
/root/.ssh
里面有id_rsa 私钥
id_rsa.pub公钥
将master上生成的/root/.ssh/authorized_keys上传到slave的/root/.ssh/
修改slave和maser的/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 使其生效
设置hadoop(master)
#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>
<!--如果SecondaryNamenode和master不是通服务器,需要同步就要设置下面选项-->
<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不是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,一行一个。
设置hadoop(slave)
下载hadoop-1.2.0.tar.gz到root并解压
#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映射为本地磁盘
为了节省节点,试验时webdav在master上配置,也可以在单独机器上配置
服务器需要安装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
将tomcat的HTTP端口修改为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的管理脚本,bat是windows的管理脚本
运行
#/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的hadoop-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.jar到webdav
#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。
转载于:https://blog.51cto.com/wutaoblog/1243317