一、 环境说明
主机名 | Zookeeper |
JDK:1.8+
Zookeeper:3.1.4
Hadoop:3.1.2
Hbase:2.1.3
二、 基本环境设置
1、 安装JDK(所有节点)
-
# tar -zxvf jdk软件包 指定目录
-
示例:
-
# tar -zxvf jdk1.8.0_171.tar.gz /usr/local/software/
2、 配置环境变量
-
# vim /etc/profile
-
最后面添加:
-
-
JAVA_HOME=/usr/
local/software/jdk1.8.0_171
-
PATH=
$JAVA_HOME/bin:
$PATH
-
CLASSPATH=.:
$JAVA_HOME/lib/dt.jar:
$JAVA_HOME/lib/tools.jar
-
export JAVA_HOME PATH
3、 是环境变量生效
# source /etc/profile
4、 检查java配置是否成功
-
#
java
-version
-
java
version "1
.8
.0_171"
-
Java(
TM)
SE
Runtime
Environment (
build 1
.8
.0_171-b11)
-
Java
HotSpot(
TM) 64
-Bit
Server
VM (
build 25
.171-b11,
mixed
mode)
5、 关闭防火墙
-
# 关闭防火墙
-
# systemctl stop firewalld
-
# 开机禁用
-
# systemctl disable firewalld
6、 禁用SELinux
-
# 临时关闭
-
# setenforce 0
-
# 开机禁用
-
# vim /etc/selinux/config
-
# 将SELINUX=enforcing改为SELINUX=disabled
-
SELINUX=disabled
-
# 查看状态
-
# getenforce
-
Disabled
-
# /usr/sbin/sestatus -v
-
SELinux status: disabled
7、 配置hosts
-
# 修改hosts
-
# vim /etc/hosts
-
# 添加如下内容
-
# 注意:已经修改了主机名称分别为h1 h2 h3 h4
-
# 最后面的 0.0.0.0 对应相应的主机,如没配置,会在namenode格式化的时候出错
-
192.168
.247
.11 h1
-
192.168
.247
.12 h2
-
192.168
.247
.13 h3
-
192.168
.247
.14 h4
-
0.0
.0
.0 h1
8、 配置免密登录
-
# 生成公钥和私钥
-
# ssh-keygen
-
# 拷贝公钥到其它节点
-
# ssh-copy-id root@h1
-
# 修改主机名,并执行多次
-
# 测试是否成功,不用输入密码,则表示成功
-
# ssh root@h1
至此,基本环境配置完毕
三、 安装zookeeper集群(h1 h2 h3)节点
1、 解压软件包到software目录下
# tar -zxvf zookeeper-3.4.13.tar.gz /usr/local/software/
2、 配置环境变量
参考JDK环境变量的配置
3、 进入到zookeeper安装目录,并拷贝conf目录下zoo_sample.cfg为zoo.cfg
# cp zoo_sample.cfg zoo.cfg
4、 编辑zoo.cfg
-
# 修改dataDir目录
-
dataDir=
/usr/local
/software/zookeeper-
3.4.
13/data
-
# 添加如下内容
-
server.
1=
h1:
2888
:
3888
-
server.
2=
h2:
2888
:
3888
-
server.
3=
h3:
2888
:
3888
5、 在zookeeper目录下,创建data目录
# mkdir data
6、 在data目录下创建myid文件,并分别添加1、2、3三个数字。示例如下
-
# 在h1下面创建myid
-
# vim myid
-
# 添加数字1
-
1
-
# 保存退出
-
:wq
h2、h3一样,分别为2和3
至此zookeeper集群配置完毕
四、 配置hadoop集群(h1 h2 h3 h4)节点
1、 同样,解压软件包、并配置环境变量
过程:略......
2、 进入到hadoop目录下的etc/hadoop
# cd etc/hadoop
3、 编辑hadoop-env.sh
-
# 主要是配置JAVA_HOME目录,注意不要使用${JAVA_HOME},如下
-
# vim hadoop-env.sh
-
export JAVA_HOME=/usr/
local/software/jdk1.8.0_171
4、 编辑core-site.xml
-
# vim core-site.xml
-
<configuration>
-
<property>
-
<name>fs.defaultFS
</name>
-
<value>hdfs://hadoop-cluster
</value>
-
<description>集群名称
</description>
-
</property>
-
<property>
-
<name>hadoop.tmp.dir
</name>
-
<value>/usr/local/software/hadoop-3.1.2/tmp
</value>
-
<description>节点上本地的hadoop临时文件夹
</description>
-
</property>
-
<property>
-
<name>ha.zookeeper.quorum
</name>
-
<value>h1:2181,h2:2181,h3:2181
</value>
-
<description>zookeeper集群
</description>
-
</property>
-
</configuration>
5、 修改hdfs-site.xml
-
# vim hdfs-site.xml
-
<configuration>
-
<property>
-
<name>dfs.nameservices
</name>
-
<value>hadoop-cluster
</value>
-
<description>集群名称
</description>
-
</property>
-
<property>
-
<name>dfs.ha.namenodes.hadoop-cluster
</name>
-
<value>nn01,nn02
</value>
-
<description>namenode名称,随便,可以是nn1,nn2,注意和下面保持一致
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.rpc-address.hadoop-cluster.nn01
</name>
-
<value>h1:9000
</value>
-
<description>nn01的RPC通信地址,注意务必是9000,不要用8020之类的,否则ui会有点问题
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.rpc-address.hadoop-cluster.nn02
</name>
-
<value>h2:9000
</value>
-
<description>同上
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.http-address.hadoop-cluster.nn01
</name>
-
<value>h1:9870
</value>
-
<description>ui地址及端口(原先是50070),随便
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.http-address.hadoop-cluster.nn02
</name>
-
<value>h2:9870
</value>
-
<description>同上
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.shared.edits.dir
</name>
-
<value>qjournal://h1:8485;h2:8485;h3:8485/hadoop-cluster
</value>
-
<description>指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId;journalId推荐使用nameservice,默认端口号是:8485
</description>
-
</property>
-
<property>
-
<name>dfs.client.failover.proxy.provider.hadoop-cluster
</name>
-
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
-
<description>高可用失败自动切换代理服务
</description>
-
</property>
-
<property>
-
<name>dfs.permissions.enabled
</name>
-
<value>false
</value>
-
<description>禁用权限
</description>
-
</property>
-
<property>
-
<name>dfs.support.append
</name>
-
<value>true
</value>
-
<description>允许数据追加
</description>
-
</property>
-
<property>
-
<name>dfs.replication
</name>
-
<value>1
</value>
-
<description>副本数量
</description>
-
</property>
-
<property>
-
<name>dfs.namenode.name.dir
</name>
-
<value>/usr/local/software/hadoop-3.1.2/hdfs/namenode
</value>
-
<description>namenode数据存放目录
</description>
-
</property>
-
<property>
-
<name>dfs.datanode.data.dir
</name>
-
<value>/usr/local/software/hadoop-3.1.2/hdfs/datanode
</value>
-
<description>datanode数据存放目录
</description>
-
</property>
-
<property>
-
<name>dfs.journalnode.edits.dir
</name>
-
<value>/usr/local/software/hadoop-3.1.2/hdfs/journalnode
</value>
-
<description>journalnode数据存放目录
</description>
-
</property>
-
<property>
-
<name>dfs.ha.automatic-failover.enabled
</name>
-
<value>true
</value>
-
<description>开启NameNode失败自动切换
</description>
-
</property>
-
<property>
-
<name>dfs.webhdfs.enabled
</name>
-
<value>true
</value>
-
<description>启用webhdfs
</description>
-
</property>
-
<property>
-
<name>dfs.ha.fencing.ssh.connect-timeout
</name>
-
<value>30000
</value>
-
<description>配置sshfence隔离机制超时时间
</description>
-
</property>
-
<property>
-
<name>dfs.ha.fencing.ssh.private-key-files
</name>
-
<value>/root/.ssh/id_rsa
</value>
-
<description>使用sshfence隔离机制时需要ssh免登陆
</description>
-
</property>
-
<property>
-
<name>dfs.ha.fencing.methods
</name>
-
<value>
-
sshfence
-
shell(/bin/true)
-
</value>
-
<description>配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行
</description>
-
</property>
-
</configuration>
5、 配置mapred-site.xml
-
# vim mapred-site.xml
-
<configuration>
-
<property>
-
<name>mapreduce.framework.name
</name>
-
<value>yarn
</value>
-
<description>指定mr框架为yarn方式
</description>
-
</property>
-
</configuration>
6、 配置yarn-site.xml
-
# vim yarn-site.xml
-
<configuration>
-
<property>
-
<name>yarn.resourcemanager.ha.enabled
</name>
-
<value>true
</value>
-
<description>开启RM高可用
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.cluster-id
</name>
-
<value>yrc
</value>
-
<description>指定RM的cluster id
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.ha.rm-ids
</name>
-
<value>rm1,rm2
</value>
-
<description>指定RM的名字
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.hostname.rm1
</name>
-
<value>h1
</value>
-
<description>指定RM的地址
</description>
-
</property>
-
-
<property>
-
<name>yarn.resourcemanager.hostname.rm2
</name>
-
<value>h2
</value>
-
<description>指定RM的地址
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.zk-address
</name>
-
<value>h1:2181,h2:2181,h3:2181
</value>
-
<description>zookeeper集群
</description>
-
</property>
-
<property>
-
<name>yarn.nodemanager.aux-services
</name>
-
<value>mapreduce_shuffle
</value>
-
<description>
</description>
-
</property>
-
<property>
-
<name>yarn.log-aggregation-enable
</name>
-
<value>true
</value>
-
<description>
</description>
-
</property>
-
<property>
-
<name>yarn.log-aggregation.retain-seconds
</name>
-
<value>86400
</value>
-
<description>
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.recovery.enabled
</name>
-
<value>true
</value>
-
<description>启用自动恢复
</description>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.store.class
</name>
-
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
</value>
-
<description>制定resourcemanager的状态信息存储在zookeeper集群上
</description>
-
</property>
-
</configuration>
7、 编辑workers文件,以前是slaves文件
-
# vim workers
-
#去掉localhost,并添加
-
h3
-
h4
8、 编辑sbin目录下的start-dfs.sh 和stop-dfs.sh并添加如下内容
-
# vim start-dfs.sh
-
HDFS_DATANODE_USER=root
-
HDFS_DATANODE_SECURE_USER=hdfs
-
HDFS_ZKFC_USER=root
-
HDFS_JOURNALNODE_USER=root
-
HDFS_NAMENODE_USER=root
-
HDFS_SECONDARYNAMENODE_USER=root
9、 编辑sbin目录下的start-yarn.sh和stop-yarn.sh并添加如下内容
-
# vim start-yarn.sh
-
YARN_RESOURCEMANAGER_USER=root
-
HADOOP_SECURE_DN_USER=yarn
-
YARN_NODEMANAGER_USER=root
至此,hadoop集群配置完毕
五、 配置hbase(h1 h2 h3 h4)节点
1、 解压hbase软件包,并配置环境变量
过程:略......
2、 进入到hbase目录的conf目录中
# cd conf
3、 编辑hbase-env.sh
-
# vim hbase-env.sh
-
# 主要是配置JAVA_HOME,同hadoop-env.sh
-
export JAVA_HOME=
/usr/local
/software/jdk1.
8.0_171
-
# 可选
-
export HBASE_CLASSPATH=$HBASE_CLASSPATH
:/usr/local/software/hadoop-
3.1.
2/etc/hadoop
-
# 关闭自身zookeeper,采用外部的zookeeper
-
export HBASE_MANAGES_ZK=
false
4、 配置hbase-site.xml
-
# vim hbase-site.xml
-
<configuration>
-
<property>
-
<name>hbase.rootdir
</name>
-
<value>hdfs://hadoop-cluster/hbase
</value>
-
<description>hadoop集群名称
</description>
-
</property>
-
<property>
-
<name>hbase.zookeeper.quorum
</name>
-
<value>h1,h2,h3
</value>
-
<description>zookeeper集群
</description>
-
</property>
-
<property>
-
<name>hbase.cluster.distributed
</name>
-
<value>true
</value>
-
<description>是否是完全分布式
</description>
-
</property>
-
<property>
-
<name>hbase.zookeeper.property.clientPort
</name>
-
<value>2181
</value>
-
</property>
-
<property>
-
<name>hbase.unsafe.stream.capability.enforce
</name>
-
<value>false
</value>
-
<description>完全分布式式必须为false
</description>
-
</property>
-
</configuration>
5、 编辑regionservers
-
# vim regionservers
-
h3
-
h4
6、 将hdfs-site.xml映射到conf下hdfs-site.xml
# ln -s /usr/local/software/hadoop-3.1.2/etc/hadoop/hdfs-site.xml ./hdfs-site.xml
7、 配置Hmaster高可用
-
# vim backup-masters
-
h2
至此Hbase配置完毕
六、 启动
由于已经配置了环境变量,所以任意位置执行以下命令都可以
1、 启动zookeeper(h1 h2 h3)节点
-
# 启动
-
# zkServer.sh start
-
# 查看状态
-
# zkServer.sh status
-
ZooKeeper JMX enabled
by
default
-
Using config: /usr/local/software/zookeeper
-3.4
.13/bin/../conf/zoo.cfg
-
Mode: follower
2、启动journalnode(h1 h2 h3)节点
-
# hdfs --daemon start journalnode
-
# 或者(不推荐)
-
# hadoop-daemon.sh start journalnode
3、 格式化zkfc和namenode(h1)节点
-
# 格式化zkfc
-
# hdfs zkfc -formatZK
-
# 格式化namenode(如果在hosts没有配置 0.0.0.0 主机名在这一步的时候可能会报错)
-
# hdfs name -format
4、 启动hadoop
-
# 下面这个命令会同时启动所有服务(当然您也可以单独启动服务)
-
# start-all.sh
5、 启动另一个namenode
-
# 同步fsimage
-
# hdfs namenode -bootstrapStandby
-
# 启动namenode
-
# hdfs --daemon.sh start namenode
6、 启动hbase
-
# 注意,要在hadoop已经完全启动后再启动
-
# start-hbase.sh
七、 最终效果
1、 jps查看所有进程效果
2、 UI效果
hadoop地址:IP:9870
Yarn地址:IP:8088
HBase地址:IP:16010
ZK元数据
完