前面安装好三节点的centos 6.5 和配置好静态ip,这里就不多说了
创建kfk用户,然后重启
Last login: Fri Jan 5 04:33:49 2018 from 192.168.86.1
[spark@spark1 ~]$ su
Password:
[root@spark1 spark]# adduser kfk
[root@spark1 spark]# passwd kfk
Changing password for user kfk.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@spark1 spark]# reboot
Broadcast message from spark@spark1
(/dev/pts/2) at 5:52 ...
The system is going down for reboot NOW!
设置主机名
接下来是主机名与ip地址的映射
配置完了重启
重启后可以看到我们的主机名改变了
接下来在windows下的映射
找到这个路径下的hosts文件,用记事本编辑
在后面加上
通过软件
实现远程连接,当然也可以用Xshell
进来之后需要设置一下,当然这个软件需要破解的,不能直接使用,怎么破解的这里就不多说了,百度上有教程,下载一个注册机按照教程来就好了
下面设置root用户切换不需要密码
加这么一句话
在编辑sudoers文件的时候大家会遇到不能编辑的问题,那是因为sudoers文件的权限是不够的原因,那就先通过chmod 777 sudoers修改权限,等编辑完了之后就chmod 440 sudoers把权限改回来
查看到防火墙是开启的,我们现行把防火墙关了
虽然这样能关闭了防火墙。但是我们这里还是要配置一下
把这里修改了
改成这样的,然后保存退出
下一步就是卸载自带的jdk
具体步骤就是先查看jdk信息然后把这几个都卸载了
[kfk@bigdata-pro01 etc]$ sudo rpm -qa|grep java
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
tzdata-java-2013g-1.el6.noarch
[kfk@bigdata-pro01 etc]$ sudo rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 tzdata-java-2013g-1.el6.noarch
创建目录
[kfk@bigdata-pro01 ~]$ sudo mkdir /opt/softwares
[kfk@bigdata-pro01 ~]$ sudo mkdir /opt/modules
[kfk@bigdata-pro01 ~]$ sudo mkdir /opt/tools
[kfk@bigdata-pro01 ~]$ sudo mkdir /opt/datas
[kfk@bigdata-pro01 ~]$ cd /opt/
[kfk@bigdata-pro01 opt]$ ll
total 20
drwxr-xr-x 2 root root 4096 Jan 5 17:30 datas
drwxr-xr-x 2 root root 4096 Jan 5 17:30 modules
drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh
drwxr-xr-x 2 root root 4096 Jan 5 17:25 softwares
drwxr-xr-x 2 root root 4096 Jan 5 17:30 tools
[kfk@bigdata-pro01 opt]$ sudo rm -rh rh
rm: invalid option -- 'h'
Try `rm --help' for more information.
[kfk@bigdata-pro01 opt]$ sudo rm -rf rh
[kfk@bigdata-pro01 opt]$ ll
total 16
drwxr-xr-x 2 root root 4096 Jan 5 17:30 datas
drwxr-xr-x 2 root root 4096 Jan 5 17:30 modules
drwxr-xr-x 2 root root 4096 Jan 5 17:25 softwares
drwxr-xr-x 2 root root 4096 Jan 5 17:30 tools
[kfk@bigdata-pro01 opt]$
把目录改成kfk用户下的目录
安装jdk1.7版本
上传安装包(这里我切换回远程连接xshell工具)
改成可执行的权限
解压
配置jdk环境变量
#java
export JAVA_HOME=/opt/modules/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
到这里为止,从复上面的操作,我同时配置另外两台机子主机名分别是bigdata-pro02.kfk.com bigdata-pro03.kfk.com
需要注意的是主机名映射的地方配置(三个节点都这样配置),在windows的hosts文件映射也是一样的,这里就不做赘述
hadoop 分布式集群部署
先上传hadoop安装包
解压
把一些没有用的文件删除掉
把.cmd结尾的文件删除掉,因为这个是windows的才用到的文件
接下来我们配置文件,我们这里使用notepad++来远程连接配置文件
首先要下载一个插件,把这个插件放到对应notepad++的plugins目录下
你会发现多了这么一项
连接成功!
首先我们需要配置的是这个文件
配置完之后先格式化一下
分别启动一下这个节点的namenode datanode
在浏览器上跑一下打开测试页面,我这里是在linux里面的火狐浏览器跑的,因为在windows下的浏览器打不开,我估计是我这边网络的原因
现在把安装好的hadoop分发到另外两个节点上
在hdfs上创建目录
上传一个文件到hdfs上面去
可以看到能上传
下面继续配置
这里吧文件名改了
把配置好的文件分发到另外两个节点
下面我们来做一个数据文件
自己随意敲一些单词进去
把这个数据文件上传到hdfs上去
分别启动resourcemanager nodemanager
这个时候可以发现多了一个tmp目录,但是不能访问
修改一下配置文件
因为在第一个节点对配置文件修改比较多,现在打算把他分发到另外两个节点上,所以先把另外两个节点的hadoop安装文件删除掉
删除
分发
先把启动的服务停掉
再次格式化namenode
分别启动各个进程
因为刚刚重新格式化了namenode,所以hdfs上的目录和文件就没有了
现在我们重新创建一下
在hdfs上创建一个输出路径
下面我们来运行一下mapreduce
可以看到报错了,因为输出目录已经存在了。我们可以给一个不存在的输出目录给他
可以看到运行成功了!
我们查看一下结果
zookeeper分布式集群的部署
先把安装包上传
上传完成后我们修改一下他的权限
解压
我们可以看看zookeeper的目录结构
把没有用的东西干掉
下面来配置zookeeper
把这个文件的名字改一下
修改后
创建一个目录zkData
修改配置文件
现在我们对zookeeper的配置就完成了,接下来就是分发给另外两台机器。
分发完了之后分别进入 第二个节点和第三个节点的/opt/modules/zookeeper-3.4.5-cdh5.10.0/zkData下分别把myid改成2和3 !!!!
下面我们来启动zookeeper服务
启动完之后我们就可以通过客户端来连接我们的服务了
从结果看没连接上
显然这里是要把3台机器的zookeeper启动了才行,当然这个是必须的,但是结果我的还是不行
查看状态
查看zookeeper.out日志
经过一段时间的折腾,和从天而降的一个高速相助,我发现我的防火墙没有关闭
啊啊 啊啊啊啊啊啊啊!!!!!!!!!!,居然犯这样的错误
好,废话不多,马上关闭防火墙
居然成功了
成功了,感谢党!!!!
现在查看谁是“老大”
可以看出来第三台机器是老大!!
Hadoop HA的搭建
先把原来的配置文件和临时目录备份一下
进到这里来
添加以下内容
创建目录
修改core-site.xml
在第二个节点上
在第三个节点上也是一样的操作
把第一节点的配置文件分别分发到其他两个节点
给3个节点分别启动journalnode
接下来在节点1上对namenode格式化
启动namenode
在nn2上同步nn1的元数据信息
把节点2的namenode启动一下
打开测试页面看看
我们可以发现两个都是standby状态,是因为我们还没有设置哪个是active状态
现在我们将nn1设置为active状态
下面把namenode datanode都启动了
先把进程停止
再启动
可以看到每次启动都需要我们手动去设置active状态
下一步要在hdfs上创建目录,那我们就先把nn1设置成active状态
在hdfs上创建目录并且把本地文件上传
查看hdfs上的文件
现在把节点1的namenode 进程杀掉
把nn2改成active状态
我们可以看到没有成功。
现在成功了!!
在节点1上能读取hdfs上的文件,说明这个HA配置成功!
在配置文件添加以下内容(其实这里添加的配置内容有错误的,下面会讲到)
把进程都停下来
同时把zookeeper也停下来
现在所有进程都停止了,下面安装步骤分别启动进程。
先分别启动三台机器的zookeeper
初始化HA在zookeeper中的状态
可以看到报错了!!,是之前的配置文件没有配好,正确的是这样的
修改后,再来一次
可以看到成功了!
启动HDFS服务
上传文件到hdfs上
这个时候我们把节点1的namenode停掉
看看能不能读取hdfs上的文件,结果报错了
发现在节点2的zkfc进程没有启动
查看日志
原因是我们在节点1上配置了hdfs-site.xml没有同步到其他节点去。
现在我们把他分发到节点2去
在节点2再次启动zkfc,可以看到启动成功了
现在我们重新来把所有进程重启一下,先停掉所有进程
先启动zookeeper
把zkfc重新格式化一次
输入Y
启动hdfs的所以服务
启动zkfc
因为节点1是active状态,所以我们就把他的namenode进程干掉
这个时候节点2变成active状态
现在我们完成了基于zookeeper的故障转移了!!!!!!
下面我们来配置yarn的HA
添加以下内容
把配置文件分配给其他节点
启动进程resourcemanager nodemanager
下面我们进行一个mapreduce程序,先创建一个输出目录在hdfs上