1.版本
组件 | 版本 | 备注 |
---|---|---|
centos | centos7.2 | |
JRE | jdk-8u45-linux-x64.gz | - |
hadoop | hadoop-2.6.0-cdh5.15.1.tar.gz | 自己通过源码编译的,具有压缩工具 |
zookeeper | zookeeper-3.4.6.tar.gz | 热切,yarn存储数据使用的协调服务 |
2.阿里云环境搭建
具体步骤在这不详述,最后搭建的结果如下图:
3.主机规划
内网ip | host | 安装软件 | 进程 |
---|---|---|---|
172.24.51.192 | hadoop001 | hadoop zookeeper | NameNode、DataNode、DFSZKFailoverController、QuorumPeerMain、JournalNode、ResourceManager和NodeManager |
172.24.51.191 | hadoop002 | hadoop zookeeper | NameNode、DataNode、DFSZKFailoverController、QuorumPeerMain、JournalNode、ResourceManager和NodeManager |
172.24.51.190 | hadoop003 | hadoop zookeeper | QuorumPeerMain、JournalNode、DataNode和NodeManager |
4.HA搭建
4.1环境准备
先在三台机器上分别创建一个hadoop用户,并切换至hadoop用户
[root@hadoop001 ~]# useradd hadoop
[root@hadoop002 ~]# useradd hadoop
[root@hadoop003 ~]# useradd hadoop
创建我们的目录结构
[hadoop@hadoop001 ~]# mkdir app software source data lib script tmp maven_repos
[hadoop@hadoop003 ~]# mkdir app software source data lib script tmp maven_repos
[hadoop@hadoop002 ~]# mkdir app software source data lib script tmp maven_repos
在三台机器上上传hadoop,zookeeper,jdk到software目录 下
如果不是阿里主机,而是自己的虚拟机还需要提前做一下操作:
1)关闭三台机器的防火墙
执行命令: systemctl stop firewalld
systemctl enable firewalld
2)设置主机名:
三台主机分别执行命令:
hostnamectl set-hostname hadoop001
hostnamectl set-hostname hadoop002
hostnamectl set-hostname hadoop003
3)关闭掉selinux
4.2ip和hostname绑定(3台)
[root@hadoop001 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.24.51.192 hadoop001
172.24.51.191 hadoop002
172.24.51.190 hadoop003
其它两台同样是这样的配置
4.3配置3台主机ssh互信
- 先每台都执行
ssh-keygen
命令,然后按3下回车。此时会在家目录生成一个隐藏的目录.ssh,该目录包含了他的公钥和私钥 - 然后每台机器在分别执行
ssh-copy-id -i id_rsa.pub hadoop001(这里都会叫输入hadoop的密码)
将自己的公钥全部给hadoop001的主机
-
然后hadoop001主机在把他的.ssh目录下的authorized_keys文件分别考到hadoop002和hadoop003的.ssh目录下
scp authorized_keys hadoop002:/home/hadoop/.ssh/authorized_keys
scp authorized_keys hadoop003:/home/hadoop/.ssh/authorized_keys -
最后测试是否三台主机ssh都已互信
[hadoop@hadoop001 ~]$ ssh hadoop001 date
Thu Aug 22 23:25:31 CST 2019
[hadoop@hadoop001 ~]$ ssh hadoop002 date
Thu Aug 22 23:25:34 CST 2019
[hadoop@hadoop001 ~]$ ssh hadoop003 date
Thu Aug 22 23:25:38 CST 2019
三台主机都执行该操作,这样说明配置互信成功注意authorized_keys必须是600权限
4.4 jdk环境搭建(三台)
因为jdk是所有用户都需要使用的,所有使用root用户创建jdk目录,对于cdh来说,jdk的目录是死的,必须在这个位置
[root@hadoop001 ~]# mkdir /usr/java
[root@hadoop002 ~]# mkdir /usr/java
[root@hadoop003 ~]# mkdir /usr/java
然后使用root用户解压jdk到/usr/java目录下,然后配置环境变量
[root@hadoop001 ~]# tar -zxcf /home/hadoop/software/jdk-8u45-linux-x64.gz -C /usr/java/
[root@hadoop002 ~]# tar -zxcf /home/hadoop/software/jdk-8u45-linux-x64.gz -C /usr/java/
[root@hadoop003 ~]# tar -zxcf /home/hadoop/software/jdk-8u45-linux-x64.gz -C /usr/java/
[root@hadoop001 jdk1.8.0_45]# vi /etc/profile
....在最后添加....
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile 使其配置文件生效
其它两台同理,然后一定要修改jdk的权限为root用户root组,还有该目录最好给777的权限
4.5 安装zookeeper(三台)
tar -zxvf software/zookeeper-3.4.6.tar.gz -C app/
ln -s zookeeper-3.4.6 zookeeper (做一个软连接,这里最好都用绝对路径做软连接)
然后进入conf目录修改zookeeper配置文件
[hadoop@hadoop001 conf]$ cp zoo_sample.cfg zoo.cfg
修改zoo.cfg 文件中的dataDir目录位置,增加server
dataDir=/home/hadoop/data/zookeeper
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
然后手动创建dataDir的目录
[hadoop@hadoop001 conf]$ mkdir ~/data/zookeeper
以上三台都要做上面所有操作
然后在刚创建的zookeeper目录下创建myid文件,并对应写入1,2,3
[hadoop@hadoop001 zookeeper]$ echo 1 > ~/data/zookeeper/myid
[hadoop@hadoop002 zookeeper]$ echo 2 > ~/data/zookeeper/myid
[hadoop@hadoop003 zookeeper]$ echo 3 > ~/data/zookeeper/myid
切记:执行 echo 1 > ~/data/zookeeper/myid时,>前后必须都要有空格,否则无法将1写入到myid文件中。
然后在hadoop个人环境变量文件.bash_profile中配置zookeeper的环境变量
[hadoop@hadoop001 ~]$ vi .bash_profile
......
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
然后source一下.bash_profile文件生效,使用which命令检查是否生效
[hadoop@hadoop001 ~]$ which zkServer.sh
~/app/zookeeper/bin/zkServer.sh
其它两台同理
4.6 安装hadoop(三台)
1.在hadoop001上,先将hadoop软件包,解压到app目录下,然后再做一个软连接,然后再配置环境变量
tar -zxvf software/hadoop-2.6.0-cdh5.15.1.tar.gz -C app/
ln -s /home/hadoop/app/hadoop-2.6.0-cdh5.15.1 /home/hadoop/app/hadoop
[hadoop@hadoop001 ~]$ vim .bash_profile
添加
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
2. 配置$HADOOP_HOME/etc/hadoop/hadoop-env.sh
修改配置文件中的下面两行
export JAVA_HOME="/usr/java/jdk1.8.0_45/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
3. 配置$HADOOP_HOME/etc/hadoop/yarn-env.sh
修改
export YARN_LOG_DIR="/home/hadoop/logs/yarn" //把yarn的日志全部放到/home/hadoop/logs/yarn目录下
4. 配置$HADOOP_HOME/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--Yarn 需要使用 fs.defaultFS 指定NameNode URI -->