Hadoop生态系统环境搭建(Hadoop全分布式、Zookeeper集群、Mysql、Hive集群、Hbase集群、Redis集群、ElasticSearch集群)

搭建成功后各节点分工如下所示:

NameNodeSecondaryNameNodeDateNodeZookeeperZKFailoverControllerJournalNodeResourceManagerNodeManagerMySQLHiveHMasterHRegionServerRedisElasticSearch
node01*******
node02*********
node03********
node04*******

一、基础环境配置

1、检查防火墙状态并关闭防火墙

检查防火墙状态,如果Active状态为active (running),则防火墙为开启状态。

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

启动防火墙

systemctl start firewalld

设置开机禁用防火墙

systemctl disable firewalld.service

设置开机启用防火墙

systemctl enable firewalld.service

2、配置免秘钥

(1)node01、node02、node03、node04分别执行以下命令,生成dsa。

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
cd .ssh

(2)分别分发密钥,本文只展示node01分发node02的命令,命令如下:
node01执行以下命令,分发密钥。

scp id_dsa.pub node02:`pwd`/node01.pub

node02执行以下命令

cat ~/.ssh/node01.pub >> ~/.ssh/authorized_keys

node01执行以下命令,验证免秘钥配置是否成功,如果成功,则不需要密码即可访问node02。

ssh node02

node01、node02、node03、node04间分别执行上述命令,分发并配置密钥,实现所有节点之间可以在不使用密码的情况下互相访问。

3、Windows10下的地址映射(可不做)

进入C:\Windows\System32\drivers\etc目录,编辑hosts文件

在末尾添加如下配置:

192.168.153.11	node01
192.168.153.12	node02
192.168.153.13	node03
192.168.153.14	node04

添加后web端输入的IP地址即可被主机名代替。

4、安装JDK

解压JDK安装包

cd /opt/software
rpm -i jdk-7u67-linux-x64.rpm

编写环境变量

whereis java
vi + /etc/profile

环境变量中添加:

# JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin

重新加载环境变量。

. /etc/profile

二、Hadoop环境搭建

Hadoop全分布式配合Zookeeper与Yarn集群实现高可用性(HA,high availability),集群各节点角色分配如下:

NameNodeSecondaryNameNodeDateNodeZookeeperZKFailoverControllerJournalNodeResourceManagerNodeManager
node01***
node02******
node03*****
node04****

各个角色的作用如下:

所属组件作用
NameNodeHDFS维护和管理文件系统元数据
SecondaryNameNodeHDFS帮助NameNode备份数据
DateNodeHDFS负责具体的数据块存储
ZookeeperZookeeperZKFailoverController启动所依赖的环境
ZKFailoverControllerZookeeperZooKeeper故障转移控制器,通过监视和控制Active NameNode与Standby NameNode之间的状态实现NameNode的主备切换
JournalNodeYarn负责监控日志并通过日志保持Active NameNode与Standby NameNode之间元数据同步
ResourceManagerYarn资源调度过程中监控 NodeManager的健康状况并分配与调度资源
NodeManagerYarn资源调度过程中管理单个节点上的资源

前期准备:配置IP、MAC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量

1、伪分布式安装

在node01节点中先搭建伪分布式

(1)hadoop包安装并配置环变量

安装版本:hadoop-2.6.5.tar.gz

tar xf hadoop-2.6.5.tar.gz -C /opt/module
vi + /etc/profile

在环境变量中添加如下:

# HADOOP_HOME
HADOOP_HOME=/opt/module/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新更改的配置

source /etc/profile
(2)更改Hadoop的配置文件

进入Hadoop配置文件目录

cd /opt/module/hadoop-2.6.5/etc/hadoop

Hadoop的第二次JAVA_HOME 环境变量配置

分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中添加JDK的环境变量

vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh

修改三个配置文件中间的JAVA_HOME设置

export JAVA_HOME=/usr/java/jdk1.7.0_67

配置core-site.xml

vi core-site.xml

在core-site.xml中添加如下配置:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/module/hadoop/pseudo</value>
    </property>
</configuration>

配置hdfs-site.xml

vi hdfs-site.xml

在hdfs-site.xml中添加如下配置:

<configuration>
   <property>
        <name>dfs.replication</name>
        <value>1</value>
   </property>
   <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node01:50090</value>
    </property>
</configuration>

配置slaves:

vi slaves

在slaves中添加:

node01
(3)格式化并启动hdfs

格式化hdfs(只能格式化一次,再次启动集群不要执行)

hdfs namenode -format

启动集群

start-dfs.sh

角色进程查看

jps

帮助命令:

hdfs 
hdfs dfs 	

查看web UI

地址为http://node01:50070与http://192.168.153.11:50070。

如果之前未配置Windows10的地址映射,则地址只能为http://192.168.153.11:50070
在这里插入图片描述

创建目录:

hdfs dfs  -mkdir -p  /user/root

查看目录:

hdfs dfs -ls /

上传文件:

hdfs dfs -put hadoop-2.6.5.tar.gz /user/root				

停止集群:

stop-dfs.sh

2、全分布式环境搭建

事先准备:先将单节点的hadoop配置文件复制并保存到hadoop_pseudo文件夹备份:

cd /opt/module/hadoop-2.6.5/etc/
cp -r hadoop hadoop_pseudo 
(1)在伪分布式的基础上更改hadoop的配置文件

更改配置core-site.xml

cd /opt/module/hadoop-2.6.5/etc/hadoop/
vi core-site.xml

将core-site.xml改为如下格式

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/module/hadoop/full</value>
    </property>

更改配置hdfs-site.xml

vi hdfs-site.xml

将hdfs-site.xml改为如下格式

   <property>
        <name>dfs.replication</name>
        <value>2</value>
   </property>
   <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>

更改配置slaves:

vi slaves

将slaves改为如下内容

node02
node03
node04
(2)分发Hadoop到其他节点

分发 hadoop-2.6.5 给其他节点

cd /opt/module/
scp -r hadoop-2.6.5 node02:`pwd`
scp -r hadoop-2.6.5 node03:`pwd`
scp -r hadoop-2.6.5 node04:`pwd`

分发环境变量配置文件给其他节点

scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
. /etc/profile
(3)格式化并启动

格式化(只能格式化一次)

hdfs namenode -format 

启动Hadoop集群

start-dfs.sh

完成简单的创建目录以及上传文件操作

hdfs dfs -mkdir -p /user/root
for i in `seq 100000`;do  echo "hello world $i" >> test.txt;done
hdfs dfs -D dfs.blocksize=1048576 -put test.txt

登录web界面 http://node01:50070
在这里插入图片描述
在这里插入图片描述

3、HA高可用配置

前期准备:将全分布式的hadoop配置文件备份到hadoop_full文件夹中

cd /opt/module/hadoop-2.6.5/etc/
cp -r hadoop hadoop_full
(1)重新配置Hadoop的配置文件并分发

配置core-site.xml

cd /opt/module/hadoop-2.6.5/etc/hadoop/
vi core-site.xml

在core-site.xml文件中,更改原有配置

    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/module/hadoop/ha</value>
    </property> 

更改后,在core-site.xml文件中,增加如下

    <property>
       <name>ha.zookeeper.quorum</name>
       <value>node02:2181,node03:2181,node04:2181</value>
    </property>

配置hdfs-site.xml

vi hdfs-site.xml

去掉原有的SNN配置

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>

增加如下配置

    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>node01:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node02:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>node01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node02:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_dsa</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/var/module/hadoop/ha/journalnode</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

更改后的hdfs-site.xml如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
       <name>dfs.ha.namenodes.mycluster</name>
       <value>nn1,nn2</value>
    </property>
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn1</name>
       <value>node01:8020</value>
    </property>
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn2</name>
       <value>node02:8020</value>
    </property>
    <property>
       <name>dfs.namenode.http-address.mycluster.nn1</name>
       <value>node01:50070</value>
    </property>
    <property>
       <name>dfs.namenode.http-address.mycluster.nn2</name>
       <value>node02:50070</value>
    </property>

    <property>
       <name>dfs.namenode.shared.edits.dir</name>
       <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
    </property>

    <property>
       <name>dfs.client.failover.proxy.provider.mycluster</name>
       <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
       <name>dfs.ha.fencing.methods</name>
       <value>sshfence</value>
    </property>
    <property>
       <name>dfs.ha.fencing.ssh.private-key-files</name>
       <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
       <name>dfs.journalnode.edits.dir</name>
       <value>/var/module/hadoop/ha/journalnode</value>
    </property>

    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
     </property>
</configuration>

分发core-site.xml hdfs-site.xml 给其他节点

scp core-site.xml hdfs-site.xml node02:`pwd`
scp core-site.xml hdfs-site.xml node03:`pwd`
scp core-site.xml hdfs-site.xml node04:`pwd`	
(2)安装zookeeper集群(node02、node03、node04):

1.zk压缩包解压在其他路径下(node02):

tar xf zookeeper-3.4.6.tar.gz -C /opt/module/

2.进入conf目录,拷贝zoo_sample.cfg zoo.cfg 并配置dataDir,集群节点(node02)

cd /opt/module/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg

在文件中间修改:

dataDir=/var/module/zk

在文件末尾添加:

server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888

3.(node02)分发zookeeper到node03、node04

cd /opt/module/
scp -r zookeeper-3.4.6/ node03:`pwd`
scp -r zookeeper-3.4.6/ node04:`pwd`

4.创建 /var/module/zk目录,进入各自目录 分别输出1,2,3 至文件 myid(node02、node03、node04)

node02、node03、node04先创建需要的zk文件夹

mkdir /var/module/zk

node02进行如下配置,将node02的myid设置为1

echo 1 > /var/module/zk/myid

node03进行如下配置,将node03的myid设置为2

echo 2 > /var/module/zk/myid

node04进行如下配置,将node04的myid设置为3

echo 3 > /var/module/zk/myid

node02、node03、node04检查myid是否配置正确

cat /var/module/zk/myid

5.各节点配置环境变量,读取profile

vi + /etc/profile

在环境变量中添加:

#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

分发到node03和node04中(也可以单独在node03、node04中配置环境变量)

scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/

更新配置文件

source /etc/profile
  1. node02、node03、node04启动zkServer.sh start 集群
zkServer.sh start
zkServer.sh status
zkServer.sh stop

node02、node03、node04节点启动journalnode集群

hadoop-daemon.sh start journalnode

随意找一个nn节点格式化(node01):

hdfs namenode -format

启动该节点(node01):

hadoop-daemon.sh start namenode

另一nn节点同步(node02):

hdfs namenode -bootstrapStandby

格式化zkfc,在zookeeper中可见目录创建(node01):

hdfs zkfc -formatZK
(3)配置mr-hd2.x yarn
NN1NN2DNZKZKFCJNNRSNM
node01***
node02******
node03*****
node04****

进入配置文件目录并更改文件名称

cd /opt/module/hadoop-2.6.5/etc/hadoop
mv mapred-site.xml.template mapred-site.xml  

配置mapred-site.xml

vi mapred-site.xml

在mapred-site.xml中增加如下配置:

	<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
	</property>

配置yarn-site.xml:

vi yarn-site.xml

在yarn-site.xml中增加如下配置:

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property> 
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>node03</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>node04</value>
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>node02:2181,node03:2181,node04:2181</value>
    </property>

分发两个文件到:node02、node03、node04节点

scp mapred-site.xml yarn-site.xml node02:`pwd`
scp mapred-site.xml yarn-site.xml node03:`pwd`
scp mapred-site.xml yarn-site.xml node04:`pwd`

4、启动:

(1)首次启动

1.node02、node03、node04分别启动Zookeeper:

zkServer.sh start

2.hdfs (注意,有一个脚本不要用,start-all)

start-dfs.sh

如果nn 和 nn2没有启动,需要在node01、node02分别手动启动:

hadoop-daemon.sh start namenode	

3.启动nodemanager:

start-yarn.sh

4.在node03、node04节点分别执行脚本:

yarn-daemon.sh start resourcemanager
(2)UI访问

Hadoop UI(node01)访问地址:
http://node01:50070
http://192.168.153.11:50070
在这里插入图片描述
Hadoop UI(node02)访问地址:
http://node02:50070
http://192.168.153.12:50070
在这里插入图片描述

yarnUI访问地址:
http://node03:8088
http://192.168.153.13:8088
在这里插入图片描述

(3)停止集群

node01: (停止nodemanager)

stop-dfs.sh 
stop-yarn.sh

node03、node04:(停止resourcemanager)

yarn-daemon.sh stop resourcemanager 
(4)启动集群

以后每次启动集群,只需要执行以下命令
node02、node03、node04:

zkServer.sh start

node01:

start-all.sh

node03、node04:

yarn-daemon.sh start resourcemanager

三、Hive安装

前置条件:配置IP、MAC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量,测试安装Hadoop全分布式

Hive依赖于上一章搭建的高可用分布式系统与MySQL数据库。

NameNodeSecondaryNameNodeDateNodeZookeeperZKFailoverControllerJournalNodeResourceManagerNodeManagerMySQLHive
node01****
node02*******
node03******
node04*****

在搭建的Hive环境中,各节点的作用如下:

作用
node01安装MySQL,作为Hive启动必备条件
node02搭建单节点Hive
node03搭建多节点Hive,作为Hive的服务端
node04搭建多节点Hive,作为Hive的客户端

1、安装MySQL

node01中配置MySQL

yum install mysql-server

如果提示“No package mysql-server available.”(找不到软件包),执行如下命令

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

启动 MySQL服务

systemctl start mysqld

查看 MySQL 运行状态:

systemctl status mysqld

进入数据库

mysql

数据库中执行以下命令设置密码(密码设置为“121314”,可根据习惯修改):

use mysql;
grant all privileges on *.* to 'root'@'%' identified by '121314' with grant option;
select host,user,password from user;
update user set password=password('121314') where user='root' and host='localhost';
flush privileges;
quit

修改密码后进入MySQL的命令变为:

mysql -u root -p

然后再PassWord后面输入设置的密码“121314”。

2、Hive单节点搭建(node02节点搭建)

单用户模式,node02单节点配置Hive,与node01的MySQL相连接

(1)解压并配置Hive配置文件(node02单节点)

在node02上解压安装Hive

cd /opt/software
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
cd /opt/module/
mv apache-hive-1.2.1-bin hive

在node02节点中配置环境变量。

vi + /etc/profile

进行如下更改

#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

更新环境变量

source /etc/profile
(2)修改jar包名称并配置MySQL驱动(node02)

在node02节点中修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。

cd /opt/module/hadoop-2.6.5/share/hadoop/yarn/lib/
rm -rf jline-0.9.94.jar 
cp /opt/module/hive/lib/jline-2.12.jar ./

在node02节点中拷贝MySQL驱动包到HIVE_HOME\lib目录下

cd /opt/software
cp mysql-connector-java-5.1.32-bin.jar /opt/module/hive/lib/
(3)修改配置文件(node02)

在node02节点中修改hive-site.xml

cd /opt/module/hive/conf
mv hive-default.xml.template hive-site.xml
vi hive-site.xml

在node02节点中批量删除hive-site.xml原有的配置:在末行命令行输入: .,$-1d;并增加如下配置

    <property>  
        <name>hive.metastore.warehouse.dir</name>  
        <value>/user/hive_remote/warehouse</value>  
    </property> 
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node01/hive_remote?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
         <name>javax.jdo.option.ConnectionPassword</name>
         <value>121314</value>
    </property>
(4)单节点启动Hive并执行简单的操作

启动条件:先在node02、node03、node04启动Zookeeper集群,并在node01启动Hadoop集群,最后在node03、node04启动Yarn
node02、node03、node04:

zkServer.sh start

node01:

start-all.sh

node03、node04:

yarn-daemon.sh start resourcemanager

node02单节点启动Hive(记得先启动Hadoop集群)

hive

node02进行Hive的基本操作:

show tables;
create table tbl(id int,age int);
show tables;
insert into tbl values(1,1);
select * from tbl;
quit;

在node01:50070的webUI页面中的Browse Directory输入路径/user/hive_remote/warehouse/tbl可以看到Hive中存入的表。
在这里插入图片描述

node01中进入数据库可以看到hive存到数据库中的表:

mysql -uroot -p
show databases;
use hive_remote;
show tables;
select * from TBLS;
quit;

在这里插入图片描述

3、Hive多节点搭建

多用户模式Remote分开,node03是服务端,node04是客户端

(1)分发Hive到其他节点并编辑配置文件

将node02中的单节点hive分发到node03、node04

scp -r hive/ node03:`pwd`
scp -r hive/ node04:`pwd`

node03、node04配置环境变量:

vi /etc/profile
#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
. /etc/profile
(2)更改服务端配置文件(node03)

node03(服务端)更改hive.site.xml配置文件

cd /opt/module/hive/conf/
vi hive-site.xml

前两项的value改变,“hive_romate"改为"hive”

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>       
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node01/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
         <name>javax.jdo.option.ConnectionPassword</name>
         <value>121314</value>
    </property>
(3)更改客户端配置文件(node04)

1.node04(客户端)更改hive.site.xml配置文件

cd /opt/module/hive/conf/
vi hive-site.xml

2.更改hive-site.xml

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node03:9083</value>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
    </property>

3.修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。

cd /opt/module/hadoop-2.6.5/share/hadoop/yarn/lib/
rm -rf jline-0.9.94.jar
cp /opt/module/hive/lib/jline-2.12.jar ./
(4)先后启动服务端和客户端

node03服务端元数据启动(阻塞式窗口)

hive --service metastore

node04客户端启动

hive

在node04的hive客户端里进行简单的操作

create table psn(id int);
show tables;
insert into psn values(1);

可以在node01的MySQL中查找hive库中的psn表
可以在http://node01:50070的web页面中进入/user/hive/warehouse/psn查找表文件
在这里插入图片描述

4、hiveserver2 Beeline启动

(1)node03启动hiveserver2(阻塞式窗口)
hiveserver2
(2)node04的beeline连接(两种方式)

方式一:

beeline

(连接成功后node03的hiveserver2会弹出ok)

!connect jdbc:hive2://node03:10000/default root 121314

退出beeline连接

!close
!quit

方式二:

beeline -u jdbc:hive2://node03:10000/default root 121314
show tables ;

退出连接

!quit

四、HBase

HBase依赖于Hadoop高可用分布式系统。集群各节点角色分配如下

NameNodeSecondaryNameNodeDateNodeZookeeperZKFailoverControllerJournalNodeResourceManagerNodeManagerMySQLHiveHMasterHRegionServer
node01*****
node02********
node03*******
node04*******

除去搭建完成的Hadoop高可用系统,本部分需要搭建的角色配置如下:

HMasterHRegionServer
node01*
node02*
node03*
node04**

其中HMaster与HRegionServer的配置如下:
各个角色的作用如下:

所属组件作用
HMasterHBase负责监控集群中所有的HRegionServer实例
HRegionServerHBase负责数据cell的处理,是拆分合并region的实际执行者

1、伪分布式

在node01节点中搭建

(1)解压安装HBase并配置环境变量

安装(node01单节点)

cd /opt/software
tar -zxvf hbase-0.98.12.1-hadoop2-bin.tar.gz -C /opt/module/
cd /opt/module
mv hbase-0.98.12.1-hadoop2 hbase

环境变量

vi /etc/profile

环境变量中做如下修改

#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin

保存并更新环境变量

source /etc/profile
(2)修改配置文件

1.修改hbase-env.sh

cd /opt/module/hbase/conf
vi hbase-env.sh

更改hbase-env.sh的JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.7.0_67

2.修改hbase-site.xml

vi hbase-site.xml

进行如下配置:

    <property>
        <name>hbase.rootdir</name>
        <value>file:///home/testuser/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/testuser/zookeeper</value>
    </property>
(3)启动HBase并进行简单的操作

1.启动HBASE

start-hbase.sh

2.进入web端:node01:60010
在这里插入图片描述

3.进入hbase命令行:

hbase shell

4.HBase基本操作:

status
version
whoami
create 'tbl','cf'
list
put 'tbl','2','cf:name','zhangsanfeng'
get 'tbl','2'
scan 'tbl'
flush 'tbl'
quit

2、完全分布式hbase搭建

node01主,node04从

在node01中配置,后续分发到node02、node03、node04

(1)更改HBase的配置文件

1.修改hbase-env.sh

vi hbase-env.sh 

更改JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.7.0_67

更改HBASE_MANAGES_ZK(第124行)

export HBASE_MANAGES_ZK=false

2.修改hbase-site.xml

vi hbase-site.xml

删除原来的伪分布式配置

  <property>
        <name>hbase.rootdir</name>
        <value>hdfs://mycluster/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node02,node03,node04</value>
    </property>

3.修改regionservers

vi regionservers

更改为:

node02
node03
node04

4.创建backup-masters(以node01为启动节点,所以该文件中配置node04)

vi backup-masters

添加以下配置

node04

5、拷贝hdfs-site.xml到conf目录

cp /opt/module/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./
(2)分发HBase到其他节点并配置环境变量

将hbase分发到其他节点(node02、node03、node04)

scp -r /opt/module/hbase node02:/opt/module/
scp -r /opt/module/hbase node03:/opt/module/
scp -r /opt/module/hbase node04:/opt/module/

其他节点修改环境变量(node02、node03、node04)

vi + /etc/profile
# HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
(3)启动HBase

启动条件:先在node02、node03、node04启动Zookeeper集群,并在node01启动Hadoop集群,最后在node03、node04启动Yarn
node02、node03、node04:

zkServer.sh start

node01:

start-all.sh

node03、node04:

yarn-daemon.sh start resourcemanager

在node01启动HBase:

start-hbase.sh

进入node01与node04的web端:

http://node01:60010
在这里插入图片描述
http://node04:60010
在这里插入图片描述
进入HBase命令行:

hbase shell

关闭HBase:

stop-hbase.sh

五、Redis

1、redis单机环境搭建

安装版本 redis-2.8.18.tar.gz

1.下载gcc、tcl 命令编译器

yum -y install gcc tcl
whereis gcc tcl

2.解压

cd /opt/software/
tar xf redis-2.8.18.tar.gz -C /opt/module/

3.编译、创建目录、拷贝

cd /opt/module/redis-2.8.18/
make && make PREFIX=/opt/module/redis install

4.配置环境变量:

vi + /etc/profile
# REDIS_HOME
export REDIS_HOME=/opt/module/redis
export PATH=$PATH:$REDIS_HOME/bin

5.重新加载配置文件:

. /etc/profile 

6.进入utils 目录,安装服务脚本:

cd /opt/module/redis-2.8.18/utils
./install_server.sh 

端口、实例、配置文件、日志、持久化数据目录、执行路径配置

enter执行 、ctrl+c退出

7.启动客户端:

redis-cli

8.使用帮助:

utils目录下:

redis-cli -h
redis-server -h 	

9.启动客户端:

redis -cli (6379)

帮助: 直接输入 help

2、redis伪分布主从环境配置

(1)高可用搭建

进入opt目录下

cd /opt

1.创建redis目录:

mkdir redis

2.在redis目录下分别创建3个端口目录: 6380,6381,6382
(不在配置文件中写他的目录指定关系,直接在当前目录下执行,持久化目录)

cd redis/
mkdir 6380
mkdir 6381
mkdir 6382

3.当前目录下分别启动3个实例:
(1)启动服务端。在node01中新建三个终端,分别进入/opt/redis/6380、/opt/redis/6381以及/opt/redis/6382目录,并且执行以下命令:
进入6380的终端执行:

cd /opt/redis/6380
redis-server --port 6380

进入6381的终端执行:

cd /opt/redis/6381
redis-server --port 6381 --slaveof 127.0.0.1 6380

进入6382的终端执行:

cd /opt/redis/6382
redis-server --port 6382 --slaveof 127.0.0.1 6380

(2)在node01中新建三个终端作为三个客户端,分别执行以下命令:

redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382

4.主从演示 crud权限,高可用

(2)伪分布哨兵集群搭建:

1.拷贝src下的redis-sentinel至bin目录下:

cd /opt/module/redis-2.8.18/src/
cp redis-sentinel /opt/module/redis/bin/

2.创建哨兵配置文件目录:

cd /opt
mkdir sent

3.目录下创建启动配置文件病拷贝:

cd /opt/sent/
vi s1.conf 

配置文件内容:

port 26380
sentinel monitor mymaster 127.0.0.1 6380 2

拷贝

cp s1.conf s2.conf
cp s1.conf s3.conf

分别对拷贝的s2.conf、s3.conf进行更改

s2.conf:

vi s2.conf 

s2.conf更改为:

port 26381
sentinel monitor mymaster 127.0.0.1 6380 2

s3.conf:

vi s3.conf 

s3.conf更改为:

port 26382
sentinel monitor mymaster 127.0.0.1 6380 2

4 启动Redis伪分布式哨兵集群
需要在node01中启动九个终端,包括三个服务端、三个客户端以及三个哨兵。

(1)启动服务端
启动三个主从redis实例,在node01中新建三个终端,分别进入/opt/redis/6380、/opt/redis/6381、/opt/redis/6382目录,并且执行以下命令:
进入6380的终端执行:

cd /opt/redis/6380
redis-server --port 6380

​ 进入6381的终端执行:

cd /opt/redis/6381
redis-server --port 6381 --slaveof 127.0.0.1 6380

​ 进入6382的终端执行:

cd /opt/redis/6382
redis-server --port 6382 --slaveof 127.0.0.1 6380

(2)启动哨兵

启动sentinel读取配置文件,在node01中新建三个终端并进入/opt/sent/目录,三个终端分别执行以下命令:
三个终端统一执行:

cd /opt/sent/

三个终端分别执行以下三个命令中的一个:

redis-sentinel s1.conf 
redis-sentinel s2.conf 
redis-sentinel s3.conf

(3)启动客户端。
测试:演示自动提备
在node01中新建三个终端,分别执行以下命令:

redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382

挂断主节点,哨兵会自动寻找新的节点

3、redis主从全分布集群

全分布式redis集群搭建:单节点多实例
删除之前安装的2.8版本并安装3.0版本

1 删除2.8版本bin目录及文件:

cd /opt/module/
rm -rf redis-2.8.18/
cd /opt/module/redis
rm -rf /opt/module/redis/bin/

2 Xftp 上传redis-cluster 目录到根目录

3 redis-cluster目录下解压redis 3.0 :

cd /opt/software/redis-cluster/
tar xf redis-3.0.4.tar.gz

4 redis目录下make命令编译拷贝bin至 /opt/module/redis/下

cd /opt/software/redis-cluster/redis-3.0.4
make && make PREFIX=/opt/module/redis install

成功后会有哨兵显示

5 测试 是否成功

输入re后按table键看是有提示

6 安装rubby编译环境

yum -y install ruby rubygems 

7 redis-cluster 目录下安装 redis gem 模块:

cd /opt/software/redis-cluster/
gem install --local redis-3.3.0.gem

8 创建文件目录、主从节点并匹配端口(已完成):
redis集群 3.x版本
物理节点1个
指定3个主节点端口为7000、7001、7002
对应的3个从节点端口为7003、7004、7005

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

9 创建配置文件redis.conf(启集群模式: 3.0 支持单机集群,但必须在配置文件中说明) (已完成)

指定不冲突的端口 及 <对应端口号>
文件内容:
声明支持集群模式
指定端口

在7000-7005每个目录中均放入redis.conf
redis.conf内容如下:

cluster-enabled yes
port 700X 

10 启动所有服务,要进入子目录启动服务
开启6个终端,分别进入7000到7005目录。执行启动命令redis-server redis.conf

cd /opt/software/redis-cluster/redis-test/7000
cd /opt/software/redis-cluster/redis-test/7001
cd /opt/software/redis-cluster/redis-test/7002
cd /opt/software/redis-cluster/redis-test/7003
cd /opt/software/redis-cluster/redis-test/7004
cd /opt/software/redis-cluster/redis-test/7005

6个终端同时执行以下命令,启动Redis:

redis-server redis.conf
ss -tanl | grep 700

11 创建集群,槽位认领

新建一个终端,在安装目录下的src中,找到 redis-trib.rb 这是rubby脚本执行程序,完成redis3.0集群创建

cd /opt/software/redis-cluster/redis-3.0.4/src
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 \127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: d4cbae0d69b87a3ca2f9912c8618c2e69b4d8fab 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: bc2e33db0c4f6a9065792ea63e0e9b01eda283d7 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 5c2217a47e03331752fdf89491e253fe411a21e1 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: 3d4b31af7ae60e87eef964a0641d43a39665f8fc 127.0.0.1:7003
   slots: (0 slots) master
   replicates d4cbae0d69b87a3ca2f9912c8618c2e69b4d8fab
M: 710ba3c9b3bda175f55987eb69c1c1002d28de42 127.0.0.1:7004
   slots: (0 slots) master
   replicates bc2e33db0c4f6a9065792ea63e0e9b01eda283d7
M: 7e723cbd01ef5a4447539a5af7b4c5461bf013df 127.0.0.1:7005
   slots: (0 slots) master
   replicates 5c2217a47e03331752fdf89491e253fe411a21e1

自动分配了主从,自动分配了slots,所有槽都有节点处理,集群上线

客户端连接
新建三个端口,输入以下命令连接

redis-cli -p 7000 -c
redis-cli -p 7001 -c
redis-cli -p 7002 -c

在7000输入set k1 a 跳转到7002
在7001输入get k1 跳转到7002
在7002输入get k1 不跳转

六、ElasticSearch

本章节与node01、node02、node03三个节点安装ElasticSearch并搭建集群,同时安装head可视化插件。

注意:ElasticSearch具有特殊性,不能使用root用户运行,所以创建一个es普通用户。安装ElasticSearch时直接切换到es用户安装,相比于用root安装,省去了转权限的步骤。

xftp拷贝elasticsearch-2.2.1.zip至software目录下

node01、node02、node03共同安装
1.安装unzip

yum -y install unzip

2.共享模式下创建es用户:(node01、node02、node03)

useradd es

为es用户添加密码

passwd es

密码设置为:

123456

3.root 用户创建 /opt/module/es(普通用户无法创建)(node01、node02、node03)(注意:此时的目录权限属于root)

mkdir -p /opt/module/es 

在module目录下执行下面命令赋予权限(node01、node02、node03)

cd /opt/module/
chown es:es es

切换用户es(node01、node02、node03)

su es

4.使用es用户解压elasticsearch-2.2.1.zip包至es目录,保证es文件属于用户es:

cd /opt/software
unzip elasticsearch-2.2.1.zip -d /opt/module/es

5.进入es/conf, 修改elasticsearch.yml配置文件:

cd /opt/module/es/elasticsearch-2.2.1/config/
vi elasticsearch.yml

修改elasticsearch.yml配置文件的cluster:

# elasticsearch集群名字
cluster.name: my-application

修改elasticsearch.yml配置文件的node(分发文件后记得修改node):

node.name: node01 

修改elasticsearch.yml配置文件的network(分发文件后记得修改network):

network.host: 192.168.153.11
http.port: 9200

末尾增加防脑裂:

discovery.zen.ping.multicast.enabled: false 
discovery.zen.ping.unicast.hosts: ["192.168.153.11","192.168.153.12", "192.168.153.13"]
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s

6.将提供的plugins文件夹通过Xftp工具传输到 /opt/module/es/elasticsearch-2.2.1/中
7.切换至root用户把plugins文件夹的权限给es用户(可以不做)

su root
cd /opt/module/es/elasticsearch-2.2.1/
chown es:es -R plugins/
su es

8.分发其他节点(用es角色分发):

cd /opt/module/es
scp -r elasticsearch-2.2.1/ es@node02:/opt/module/es/
scp -r elasticsearch-2.2.1/ es@node03:/opt/module/es/

9.分别修改配置文件的主机名和IP地址

cd /opt/module/es/elasticsearch-2.2.1/config/
vi elasticsearch.yml

分别将node02和node03的elasticsearch.yml中主机名和IP地址修改成自己的。
10.进入bin目录,启动脚本:

cd /opt/module/es/elasticsearch-2.2.1/bin/
./elasticsearch

11.测试插件效果
http://node01:9200/_plugin/head
http://192.168.153.11:9200/_plugin/head?pretty
在这里插入图片描述

七、小结

至此Hadoop生态系统环境已经搭建完毕,首先搭建Hadoop分布式系统并通过Zookeeper集群与Yarn集群实现系统的高可用性,其次安装MySQL并搭建Hive的多节点集群,然后安装HBase数据库并搭建HBase的集群,最后分别安装哨兵模式的Redis集群和ElasticSearch集群。

集群启动步骤如下:
node02、node03、node04启动Zookeeper:

zkServer.sh start

node01启动Hadoop:

start-all.sh

node03、node04启动Yarn:

yarn-daemon.sh start resourcemanager

node01启动HBase集群

start-hbase.sh
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloWorldZMY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值