Hadoop安装配置
一、初始环境准备
1、?安装虚拟机(Vmware8.0)
2、?在虚拟机上安装Linux系统(CentOS 6.0)
???? 建议安装桌面版,配置服务较完整。安装二台服务器,一台Master,一台Slave。
3、?卸载系统自带的OpenJDK,安装Sun公司的JDK
(1)查看jdk信息
rpm -qa | grep java
?显示如下信息:
???? java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
??? ?java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
?(2) 卸载openJDK(根据显示的信息逐一卸载)
rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
?
(3)安装Sun的JDK(取得root权限后执行)
sudo rpm -ivh /目录/jdk-7-linux-x64.rpm
?
4、?设置环境变量
(1)?# vim /etc/profile
在profile文件下面追加写入下面信息:
export JAVA_HOME=/usr/java/jdk1.7.0export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin
?(2)?保存,并使环境变量设置立即生效。
source /etc/profile
?
5、?设置IP地址及域名映射
(1)设置IP
修改/etc/sysconfig/network-scripts/ifcfg-eth0,内容如下:
DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.1.10NETMASK=255.255.255.0BROADCAST=255.255.255.255HWADDR=00:0C:29:A9:70:C3TYPE=EthernetONBOOT=yesNETWORK=192.168.1.1
?注:BOOTPROTO=dhcp则为自动获取,可添加到最后一行,则设置的IP地址无效,以自动获取的IP地址为准,自动获取的IP地址根据虚拟网卡而固定IP,系统重启不会变化,可避免虚拟机上不了网问题。
(2)添加host映射
? 编辑/etc/hosts 文件,注意host name不要有下划线
192.168.1.2 master192.168.1.3 slave1
?(3)重启网络服务
service network restart
?
二、SSH无密码登录设置
1、修改ssdh配置文件
用root用户修改/etc/ssh/sshd_config文件(客户端、服务器都需要更改)将:
#AuthorizedKeysFile .ssh/authorized_keys
?这一行前面的#号去掉即,启用:
AuthorizedKeysFile .ssh/authorized_keys
?(如果需要root也能ssh登录,把“#PermitRootLogin yes”前面的#号也去掉)
同样在root用户下,使用:
/etc/rc.d/init.d/sshd restart
?重启sshd服务使之生效。
以上设置不是必须的,可能sshd的默认配置已经是上述这样配置了,此时就不需要再修改了。
2、客户端的设置
切换到需要ssh登录的用户下,执行命令产生公私钥对:
ssh-keygen -t rsa
?根据提示默认保存钥匙文件路径和默认空密码。
公私钥产生在此用户目录下的.ssh子目录中,其中id_rsa为私钥,id_rsa.pub为公钥
3、服务端的设置
将客户端账户的公钥传到服务端中
scp root@192.168.1.2:/root/.ssh/id_rsa.pub /root/
?将id_rsa.pub中的内容添加到authorized_keys文件中, authorized_keys文件名需与sshd_config中的设置相符
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
?
4、 验证
ssh 服务端主机名或IP
?无须再输入密码短语。
如果要客户端与服务端都要互相无密码登录,则服务端要按照客户端的设置的方法进行设置,
而客户端要按照服务端的设置的方法进行设置。
?
三、安装Hadoop
1、下载hadoop
下载地址:http://hadoop.apache.org/common/releases.html
(1)用root用户登录服务器,将下载的“hadoop-0.20.2.tar.gz”复制到"/usr/local"目录下面。
(2)用下面命令把" hadoop-0.20.2.tar.gz "进行解压,并将其命名为"hadoop"
tar –zxvf hadoop-0.20.2.tar.gz mv hadoop-0.20.2 hadoop
?(3) 如果是普通用户访问hadoop文件夹,需授权访问,root用户不用。例:
chown –R hadoop:hadoop hadoop
?将文件夹"hadoop"读权限分配给hadoop用户
2、在Hadoop目录下创建临时文件夹,并在后面配置文件中指定路径
mkdir /usr/local/hadoop/tmp
?
3、配置Hadoop相关文件
(1)配置hadoop环境变量
修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:
# set hadoop pathexport HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH :$HADOOP_HOME/bin
?使环境变量生效
source /etc/profile
?
?(2)配置hadoop-env.sh
该"hadoop-env.sh"文件位于"/usr/local/hadoop/conf"目录下, 在文件的末尾添加下面内容:
# set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_31
?
(3)配置core-site.xml文件
修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。
<configuration><property><name>hadoop.tmp.dir</name><value>/usr/hadoop/tmp</value>(备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)<description>A base for other temporary directories.</description></property><!-- file system properties --><property><name>fs.default.name</name><value>hdfs://192.168.1.2:9000</value></property></configuration>
?备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。
?
(4)配置hdfs-site.xml文件
修改Hadoop中HDFS的配置,配置的备份方式默认为3。
<configuration><property><name>dfs.replication</name><value>1</value>(备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)</property><configuration>
?
?(5)配置mapred-site.xml文件
修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
<configuration><property><name>mapred.job.tracker</name><value>http://192.168.1.2:9001</value></property></configuration>
?
(6)配置masters文件
去掉"localhost",加入Master机器的IP:192.168.1.2
(7)配置slaves文件(Master主机特有)
去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
例如:添加形式如下
192.168.1.3
192.168.1.4
现在在Master机器上的Hadoop配置就结束了,剩下的就是配置Slave机器上的Hadoop
?
4、将配置好的Hadoop目录拷贝到其它slave机器
将 Master上配置好的hadoop所在文件夹"/usr/local/hadoop"复制到所有的Slave的"/usr/local"目录下(实际上Slave机器上的slavers文件是不必要的, 复制了也没问题), 接着在slave机器上修改"/etc/profile"文件(配置 java 环境变量的文件),将以下语句添加到末尾,并使其有效(source/etc/profile):
# set hadoop environmentexport HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH :$HADOOP_HOME/bin
?
5、 启动及验证
(1) 格式化HDFS文件系统
hadoop namenode –format
?备注:只需一次,下次启动不再需要格式化,只需 start-all.sh
(2)启动hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
service iptables stop
?启动hadoop
start-all.sh
?
(3)验证hadoop
(a) 在Master和slave机器上用 java自带的小工具jps查看进程。
jps
?(b) 网页查看集群
访问"http:192.168.1.2:50030"
访问"http:192.168.1.2:50070"
?