第一步:准备2台虚拟机或者物理机(我准备的机器IP:192.168.195.159,192.168.202.145(centos))
第二步:配置hosts文件
vi /etc/hosts
加入
192.168.195.159 master
192.168.202.145 slave
2台机器都要加入这2行
第三步:建立hadoop运行帐号
/usr/sbin/groupadd -f hadoop //设置hadoop用户组
/usr/sbin/useradd -m longzhun -g hadoop -G admin //-m 用户名 -g 用户组 -G admin权限
passwd longzhun //新建密码
su longzhun 切换到longzhun
安照这个步骤分别在192.168.195.159,192.168.202.145机器上建立hadoop运行账号
第三步:配置ssh免密码连入
SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数
据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
(1) 每个结点分别产生公私密钥。
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
以上命令是产生公私密钥,产生目录在用户主目录下的.ssh目录中,如下:
cd /root/.ssh 或者cd ~/.ssh
id_dsa
id_dsa.pub
Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:
cat id_dsa.pub >> authorized_keys
用上述同样的方法在剩下结点中如法炮制即可。
(2) 单机回环ssh免密码登录测试
即在单机结点上用ssh进行登录,看能否登录成功。登录成功后注销退出(退出命令exit)
ssh localhost
用上述同样的方法在剩下结点中如法炮制即可。
(3) 让主结点(master)能通过SSH免密码登录子结点(slave)
为了实现这个功能,slave结点的公钥文件中必须要包含主结点的公钥信息,这样
当master就可以顺利安全地访问这slave结点了。操作过程如下:
在slave机器上输入命令:
scp longzhun@master:~/.ssh/id_dsa.pub ~/.ssh/master_dsa.pub
cat master_dsa.pub >> authorized_keys
如上过程显示了slave结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公钥文件追加至authorized_keys文件中,通过这步操作,如果不出问题,master结点就可以通过ssh远程免密码连接slave结点了。在master结点中操作如下:
ssh slave
slave结点首次连接时需要,“YES”确认连接,这意味着master结点连接slave结点时需要人工询问,无法自动连接,输入yes后成功接入,紧接着注销退出(exit)至master结点。要实现ssh免密码连接至其它结点,还差一步,只需要再执行一遍ssh slave,如果没有要求你输入”yes”,就算成功了
表面上看,slave的ssh免密码登录已经配置成功,但是我们还需要对主结点master也要进行上面的同样工作,这一步有点让人困惑,但是这是有原因的,具体原因现在也说不太好,据说是真实物理结点时需要做这项工作,因为jobtracker有可能会分布在其它结点上,jobtracker有不存在master结点上的可能性。
对master自身进行ssh免密码登录测试工作:
scp longzhun@master:~/.ssh/id_dsa.pub ~/.ssh/master_dsa.pub
cat master_dsa.pub >> authorized_keys
ssh master 测试
四、下载并解压hadoop安装包
由于测试就用低版本的,下载地址
http://archive.apache.org/dist/hadoop/core/hadoop-0.20.2/
解压到/home/longzhun/hadoop目录下
五、配置namenode,修改site文件
前提条件:安装好JDK(请上网查找安装方法)
vi /etc/profile
加入:
export HADOOP_INSTALL=/home/longzhun/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
2台机器都需要
让配置文件立刻生效 source /etc/profile
到目前为止,准备工作已经完成,下面开始修改hadoop的配置文件了,即各种site文件,文件存放在/hadoop/conf下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml这三个文件。
core-site.xml:
fs.default.name
hdfs://master:9000
true
hadoop.tmp.dir
/home/longzhun/hadoop/tmp
A base for other temporary directories
hdfs-site.xml配置如下:
dfs.name.dir
/home/longzhun/hadoop/name
true
dfs.data.dir
/home/longzhun/hadoop/data
true
dfs.replication
2
true
接着是mapred-site.xml文件:
mapred.job.tracker
192.168.195.159:9001
~
六、配置hadoop-env.sh
export JAVA_HOME=/export/servers/jdk1.6.0_25
七、配置masters和slaves文件
vi masters
写入master
vi slaves
写入slave
八、向各节点复制hadoop
scp -r hadoop slave:/home/longzhun
九、格式化namenode
hadoop namenode -format
这一步在主结点master上进行操作
注意:只要出现“successfully formatted”就表示成功了。
十、启动hadoop
这一步也在主结点master上进行操作:
start-all.sh
十一、 用jps检验各后台进程是否成功启动
在主结点master上查看namenode,jobtracker,secondarynamenode进程是否启动。\
出现如下为正确
21400 NameNode
22287 Jps
21560 SecondaryNameNode
21640 JobTracker
在slave结点了查看tasktracker和datanode进程是否启动。
3114 Jps
29546 Bootstrap
673 DataNode
777 TaskTracker
进程都启动成功了。恭喜~~~
十二、 通过网站查看集群情况
在浏览器中输入:http://192.168.195.159:50030/jobtracker.jsp,网址为master结点所对应的IP:
浏览器中输入:http://192.168.195.159:50070/dfshealth.jsp,网址为master结点所对应的IP: