在redhat中配置Hadoop分布式云计算平台
------------冯现玉
目录:
1.在VMware虚拟机中安装redhat-linux操作系统(我们使用的操作系统是linux9使用的虚拟机是VMware7.0版)
2.在安装好的虚拟机中,配置网络文件(Hadoop要求不同的节点需要使用命名相同的用户文件存储位置等,这里我们都使用root用户,以简化配置)
3.在配置好的网络文件中ping通主机和个子节点,启动linux9自带的ftp服务器和ssh服务器功能,并设置为开机自启动
4.使用FTP 服务器上传jdk并安装jdk,配置系统的环境变量(本实验采用的jdk版本是jdk1.6.0_13)
5.安装putty以方便在主机中管理各虚拟系统。
6.配置ssh服务,使用免密码登录模式。
7.使用FTP上传Hadoop-0.20.2,安装hadoop并启动分布式系统。
8.在主节点上安装eclipse3.3.2,并配置eclipse作为我们我们的开发环境
以上部分为本文档的大致思路,下面我们来详细讲解
1.把虚拟机中的网络配置模式设置为host-only模式使用命令chkconfig intables off关闭网络防火墙,使用命令vi /etc/sysconfig/network-scripts/ifcfg-eth0修改网络配置文件,其中根据主机上第一块虚拟网卡的IP地址配置同一网段的IP地址,使用静态获得IP地址
ONBOOT=yes //系统启动时加载
BOOTPROTO=static //IP地址静态配置,若该值为“dhcp”则为动态获得
IPADDR=192.168.233.11(其余两台机器是12,13)//设置IP地址
NETMASK=255.255.255.0 //设置子网掩码
2.修改主机名,vi /etc/sysconfig/network 通过配置文件来修改主机名,NETWORKING=yes HOSTNAME=主机名,在这里我们把三台机器的主机名分别设为hadoop1;hadoop2;hadoop3,然后修改每台机器的/etc/hosts 文件,使得不同机器见都能相互解析,在其中加入 。
127.0.0.1 localhost.localdomain localhost yourname
192.168.233.11 hadoop1
192.168.233.12 hadoop2(注意文档中的内容只加不要随意删除)
192.168.233.13 hadoop3
下面不同机器间就可以ping通了
2.使用若使redhat9自带FTP服务器,只要使用命令chkconfig vsftpd on(如果不需要开机自启动只需命令service ftpd start),当然直接把service vsftpd start 直接写到/etc/rc.local中即可,同理ssh服务也可以相似的方法设置,命令为chkconfig sshd on.启动完这两个服务后需要允许root用户使用FTP下载上传文件,需要修改linux下的两个文件etc里面的文件,vsftpd.user_list编辑他加井好把root注释掉,当然文件vsftpd.ftpusers也是这样处理,然后重启 service vsftpd restart,这样就可以了主机和虚拟机之间上传下载文件了,并且可以通过主机控制linux。
3.因为正常环境下服务器的使用者和服务器是不接触的所以我们使用ssh 服务来远程控制linux操作系统,使用ssh 客户端,这个软件我们使用putty,在putty中输入需要连接的虚拟系统,并输入用户名和密码即可实施远程控制,当然是是命令行界面,下载任意一款ftp客户端软件,输入虚拟操作系统IP地址,和用户名和密码就可以在Windows和linux环境间上传和下载文件。
4.我们在根目录下建立work文件夹,同时在根目录下建立文件夹JDK,这个文件夹中顾名思义就是安装jdk,我们使用FTP服务器把适用于linux操作系统的jdk上传到linux操作系统的JDK文件夹,然后我们这里使用的是jdk.1.6.0_13即可,执行文件,一路回车即可自动安装到JDK文件夹下面,同时配置环境变量,环境变量的配置文件位于/etc/profile文件,我们使用vi在其后面加入下列内容即可:
export JAVA_HOME=/JDK/jak1.6.0_13
Export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
Export PATH=$JAVA_HOME/bin:/Work/hadoop-0.20.2/bin
5.下面我们在根目录的work上传Hadoop的压缩文件,使用解压命令tar -zxvf后即可解压hadoop的压缩文件,下面是配置不同操作系统中的压缩文件。
6.不同的节点之间需要通信,传递数据,这样我们就可以使用ssh服务即可,使用该服务在windows环境下我们使用的是CYGWIN模拟linux环境,但在linux只需要配置一下午密码登陆即可,我们在保证不同的linux操作系统间可以相互ping通的情况下,使用putty登陆主机输入命令ss
ssh-keygen -t rsa //一路回车
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
同时需要把生成的密钥对拷贝到另外两个子节点上,这样我们使用命令:scp -r ~/.ssh root@192.168.233.12:~/即可,同时在另外两台机器上我们也需要使用命令cat id_rsa.pub >> authorized_keys命令建立管道,这样不同的linux环境中即可顺利的进行通讯,我们在不同的操作系统中使用命令ssh 主机名可以成功地登录不同的机器(一定要在每个操作系统及其自己之间进行全部测试)
7.配置文件(一下配置文件在不同的机器的相同位置使用vi配置)
配置conf/hadoop-env.sh文件,在文件中添加环境变量,增加以下内容: export JAVA_HOME=/JDK/jdk1.6.0_13
配置conf/core-site.xml文件,增加以下内容
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000</value>//你的namenode的配置,机器名加端口
配置conf/core-site.xml文件,增加以下内容
(因为重启后可能删掉目录所以按下面设置)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/xhadoop/tmp</value>
//Hadoop的默认临时路径,这个最好配置,然后在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令了(手动加上该目录)。
配置conf/hdfs-site.xml文件,增加以下内容
<property>
<name>dfs.name.dir</name>
<value>/root/xhadoop/dfs/name</value>
//NameNode持久存储名字空间及事务日志的本地文件系统路径(手动加上该目录)。
property>
<name>dfs.data.dir</name>
<value>/root/xhadoop/dfs/data</value>
//DataNode存放块数据的本地文件系统路径,逗号分割的列表(手动加上该目录)。
property>
<name>dfs.replication</name>
<value>1</value>//数据需要备份的数量,默认是三
配置conf/mapred-site.xml文件,增加以下内容
<configuration>
<property>
<name>mapred.job.tracker</name>//JobTracker的主机(或者IP)和端口。
<value>hadoop1:9001</value>
配置conf/masters,添加[服务器master]的主机名或者IP,具体如下
192.168.233.11 (主节点ip或者是其主机名)
配置conf/slaves,添加[服务器slaves]的主机名或者IP,具体如下(数据子节点的ip地址或者是主机名)
192.168.233.11
192.168.233.12
192.168.233.13
8.下面我们就可以格式化都,启动分布式文件系统了
使用命令bin/hadoop namenode -format
然后是bin/start-all.sh
(注意这些都是只能在主节点上操作)
下面是主机使用主机,子节点使用linux 操作系统,建立分布式集群的过程