一 下载软件
安装环境:CentOS 6.4 X86_64
JDK 1.7.0_25
Hadoop 1.2.1
Hadop下载地址:http://hadoop.apache.org/releases.html
JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
二 SSH免密码登录
a.安装SSH服务
yum install ssh 安装SSH协议
yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)
service sshd restart 启动服务
b.配置
生成其无密码密钥对
ssh-keygen –t rsa –P ‘'
询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。
把id_rsa.pub追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
c.修改权限
在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。
修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
vim /etc/ssh/sshd_config
修改如下的内容:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
d.验证登录
退出root登录,使用hadoop普通用户验证是否成功
ssh localhost
注意:把公钥复制到其他的所有机器上,可以实现hadoop集群部署
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
上面的命令是
复制
文件"
id_rsa.pub
"到服务器IP为"
192.168.1.3
"的用为"
hadoop
"的"
/home/hadoop/
“下面。
注意:1.
文件夹".ssh"在配置SSH无密码登录时系统自动生成时,权限自动为"700",如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败,所以如果是手动创建.ssh文件夹的话应将其权限设置为700:
chmod 700 ~/.ssh
2.在配置SSH需要注意两个权限:a.authorized_keys的权限600 b.ssh文件夹的权限700
三 配置JAVA
a. 将下载后的java文件进行解压,然后将其放到相应的文件夹中
b. 配置java环境变量
以下命令都适用root用户进行操作
vim /etc/profile
在文件尾部添加以下内容
#set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
使配置生效
source /etc/profile
c.验证
java -version
四 配置主机名字
a.主机名称的修改
查看当前主机的名称:hostname
修改当前主机的名称(使用root用户):
vim /etc/sysconfig/network
HOSTNAME=Master
b.配置hosts文件
"
/etc/hosts
"这个文件是用来配置主机将用的
DNS
服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"
/etc/hosts
"这个文件,通过把LAN内的各主机的IP地址和HostName的
一一对应
写入这个文件的时候,就可以解决问题。
修改hosts文件:
vim /etc/hosts
192.168.2.175 Master
192.168.2.175 Slave
注:如果是集群搭建的话,可以书写不同的IP地址
c.测试连通性
ping Slave
五 配置Hadoop
a.修改hadoop-env.sh文件,设置java环境
export JAVA_HOME=/usr/java/jdk1.6.0_31
b.
配置core-site.xml
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://192.168.2.175:9000/</value>
- 默认的namenode的端口为8020
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/home/hadoop/hadoop/tmp</value>
- </property>
- </configuration>
c.
配置hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.name.dir</name>
- <value>/home/hadoop/hadoop/hdfs/name</value>
- </property>
- <property>
- <name>dfs.data.dir</name>
- <value>/home/hadoop/hadoop/hdfs/data</value>
- </property>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
d.
配置mapred-site.xml
-
<property>
- <name>mapred.job.tracker</name>
- <value>http://192.168.2.175:9001</value>
- </property>
- <property>
- <name>mapred.local.dir</name>
- <value>/home/hadoop/hadoop/mapred/local</value>
- </property>
- <property>
- <name>mapred.system.dir</name>
- <value>/tmp/hadoop/mapred/system</value>
- </property>
- </configuration>
e.配置masters和slaves文件
192.168.2.175
f.配置/etc/profile文件
# set hadoop environment
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH :$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_PID_DIR=$HADOOP_HOME/run/tmp
这样就能直接使用"bin/hadoop"也可以直接使用"hadoop",现在不管哪种情况,hadoop命令都能找见了。我们也没有必要重新在设置hadoop环境变量了,只需要记住执行Hadoop命令时不需要在前面加"bin"就可以了。
d.测试hadoop 安装
hadoop version
六 启动应用
a.格式化hadfs
hadoop namenode -format
b.
启动hadoop
start-all.sh
注:对于集群的环境,
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
service iptables stop
c.
验证hadoop
用"jps”命令
jps
查看Hadoop集群的状态
hadoop dfsadmin -report
d.网页查看
可以通过以下链接访问haddop服务了
localhost:50030/ for the Jobtracker
localhost:50070/ for the Namenode
localhost:50060/ for the Tasktracker
知识补充说明
hadoop-env.sh:用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等;
core-site.xml: 用于定义系统级别的参数,它作用于全部进程及客户端,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;
hdfs-site.xml: HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;
mapred-site.xml:mapreduce的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;
masters: hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;
slaves:Hadoop集群的slave(datanode)和tasktracker的主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;