我们此次安装是在Linux环境,Linux的一些安装操作和网络配置这里就不多讲了,这里默认Linux是可以和win主机ping通的。
一.安装JDK
1.上传压缩包
上传jdk的压缩包并进行解压,最好解压到新建的目录下;
tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/local/java
2.添加环境变量
编辑配置文件,并将java添加到环境变量中;
vim /etc/profile
在文件最后添加:
export JAVA_HOME=/usr/local/java/jdk-7u_65-i585
export PATH=$PATH:$JAVA_HOME/bin
刷新配置:
source /etc/profile
二.安装Hadoop
1.上传压缩包
把hadoop的安装压缩包上传到linux上,我这里安装的是2.4版本,然后使用tar命令进行解压,最好解压到自己新建的文件夹下面,这样便于管理;
tar -zxvf hadoop-2.4.1.tar.gz -C /usr/local/hadoop
2.删除doc目录(不是必须)
解压完成之后我们可以看到hadoop的目录文件,bin和sbin目录主要是一些脚本文件,其中sbin是关于一些启动和停止hadoop的脚本,跟hadoop相关的jar包存放在share目录下;
在share目录下有个doc目录,这里都是一些说明文档,没什么作用,可以把它删除掉;
rm -rf doc
3.修改Hadoop配置文件
进去etc/hadoop,就看到很多配置文件,我们不需要全部都修改,要修改的配置文件有5个;
hadoop-env.sh
环境变量的配置文件,在这里配置,获取java_home,这里我们看到.cmd的文件,这是win的配置文件,这里我们改的是linux的.sh;
vi hadoop-env.sh,这里把java_home改成具体的jdk路径
core-site.xml
Hadoop公共部分的配置文件,这里把文件系统和产生文件的存储目录配置上去;
这里我们是伪分布式,节点都在一台机子上,所以这里是localhost,默认的端口号是9000;
hdfs-site.xml
hdfs组件的配置文件,这里配置文件副本数量;
一般情况副本的数量3个,但是我们这只是一台主机,所以就要一个;
mapred-site.xml
mv mapred-site.xml.template mapred-site.xml,给配置文件改个名字,要不然Hadoop不会去读这个文件;
这里配置hadoop调度集群,如果不配置就相当于只是在本地跑,只能是单机版;
4.将hadoop添加到环境变量
vi /etc/profile,然后加上hadoop的配置;
source /etc/profile,让配置马上生效
5.初始化namenode
hadoop namenode -format,在任意地方执行这条命令;
初始化的工作主要是,在data目录下新建了子文件夹以及在子文件夹里面写元数据;
看到这句话代表格式化成功;
6.启动hadoop
进去sbin目录下,有很多脚本,可以启动全部,也可以先启动HDFS,再启动YARN;
./start-dfs.sh
./start-yarn.sh
三.验证是否启动成功
使用jps命令验证;
这里我们发现我们之前修改配置文件的时候并没有指定datanode,只是指定了namenode,这里的datanode也在localhost上启动起来了,其实,配置文件slaves已经默认指定了datanode的启动机器是localhost,我们也可以在slaves中进行修改启动机器;
四.配置ssh免登陆
集群搭建完成之后,启动的时候每次都要输入服务器的密码,小集群还可以接受,要是几十上百个集群的话,每次都要输入密码,效率很慢也容易出问题,基于这种情况,我们可以配置ssh免登录;
ssh原理:
如:一台服务器server01向另一台服务器server02通信
1.server01请求登录server02;
2.server02查看自己的授权列表authorized_keys是否有server01的公钥;
3.如果存在server01的公钥,则用server01的公钥加密一个随机字符串发送给server01;
4.server01接收到server02发过来的加密字符串之后,用自己的私钥进行解密;
5.server01将解密结果发送给server02;
6.server02验证解密结果,并发送给server01是否验证成功;
由此看出ssh的重点是:公钥,私钥,授权列表;
配置步骤:
1.生成免登录密钥
ssh-keygen -t rsa,执行这条命令之后点击回车选默认值就可以了
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2.进入到自己用户的home目录下创建授权列表文件(如果存在就不需要创建),并修改文件权限为600
执行命令:ll -a,会看到有一个.ssh目录,
进去目录:cd .ssh,
创建文件:touch authorized_keys
修改文件权限:chmod 600 authorized_keys
3.把公钥发送给需要免登录的服务器(如果是伪分布式则不需要,因为只有一台机器)
scp id_rsa.pub 地址:文件存放路径
4.在文件最后追加公钥(如果另一台机器没有授权列表文件则创建列表文件再追加)
cat id_rsa.pub >> authorized_keys
5.或者跳过2,3,4步,直接使用命令:ssh-coyp-id servicer2,即可把公钥发送给指定的机器上;