Hive数据仓库安装

mapreduce 程序编写

1-1Hive与传统结构化查询语言对比

HiveQLSQL(结构化查询语言)
ANSI SQL不完全支持支持
更新insert OVERWRITE\INTO TABLEUPDATE\INSERT\DELETE
事务不支持支持
模式读模式写模式
数据保存HDFS块设备、本地文件系统
延时
多表插入支持不支持
子查询完全支持只能用在From子句中
视图Read-onlyUpdatable
可扩展性
数据规模

1-2 Hive在Hadoop生态系统所处位置

hive1.png
环境准备

组件 进程 master node1 node2
HDFS NameNode
SecondaryNameNode
DataNode
Yarn(MapReduce2.0) ResourceManager
NodeManager
HIVE Hive Client
Hive Server
Mysqlserver

安装所需要软件包如下所示:

1.apache-hive-2.3.6-bin.tar.gz:Hive组件安装包

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

2.mysql-connector-java-5.1.5-bin.jar:Mysql数据库的连接器包

下载地址:https://dev.mysql.com/downloads/connector/j/

需要将apache-hive-2.3.6-bin.tar.gz上传到master 节点

准备好软件包node2节点执行

(1)安装 EPEL 源和mariadb:

[root@node2 ~\]#yum -y install epel-release mariadb mariadb-server wget

(2)安装 MySQL server 包,下载源安装包:

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

(3)安装源:

[root@node2 ~\]#rpm -ivh mysql57-community-release-el7-8.noarch.rpm

查看是否安装成功:

[root@node2 ~\]#cd /etc/yum.repos.d

目录下会有文件:

Centos-Vault.repo epel-testing.repo mysql-community-source.repo epel.repo mysql-community.repo

(4)启动MySql服务

#重载所有修改过的配置文件:
[root@node2 ~\]#systemctl daemon-reload
#开启MySql服务:
[root@node2 ~\]#systemctl start mysqld
#开机MySql自启:
[root@node2 ~\]#systemctl enable mysqld
#获取初始密码:
[root@node2 ~\]#grep password /var/log/mysqld.log
#登陆 MySQL:
[root@node2 ~\]#mysql -uroot -p

(5)更改数据库安全策略

#设置密码强度为低级:
[root@node2 ~\]#set global validate_password_policy= 0;
#设置密码长度:
[root@node2 ~\]#set global validate_password_length=4;
#修改本地密码:
[root@node2 ~\]#alter user 'root'@'localhost' identified by '000000';
#退出:
Exit
#以新密码登录 MySQL:
mysql -uroot -p000000
#创建用户:
create user 'root'@'%' identified by '000000';
#允许远程连接:
grant all privileges on *.* to 'root'@'%' with grant option;
#刷新权限:f
lush privileges;

(7)Node1 上安装 hive

master 中操作如下:

mkdir -p /usr/hive

tar -zxvf /opt/soft/apache-hive-2.3.6-bin.tar.gz -C /usr/hive/

然后再node1节点也创建hive文件夹

scp -r /usr/hive/apache-hive-2.3.6-bin root@node1:/usr/hive/

(8)修改环境变量

修改/etc/profile 文件设置 hive 环境变量。(master 和 node1的值 )。

vi /etc/profile

export HIVE_HOME=/usr/hive/apache-hive-2.3.6-bin

export PATH=\$PATH:\$HIVE_HOME/bin

验证环境变量

source /etc/profile

(9)修改配置文件

将上传到lib的mysql-connector-java-5.1.5-bin.jar分发到node1

scp /lib/mysql-connector-java-5.1.5-bin.jar

root@node1:/usr/hive/apache-hive-2.3.6-bin/lib

然后修改node1 的配置文件hive-env.sh(在/usr/hive/apache-hive-2.3.6-bin/conf文件)

生成配置文件 

cp hive-env.sh.template hive-env.sh

 在配置文件添加:

HADOOP_HOME=/opt/bigdata/hadoop-3.0.0(根据自己设置来)

创建hive-site.xml文件

[root@node1 conf]# vi hive-site.xml 
<configuration> 
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive_remote/warehouse</value>
        </property> 
        <property> 
                <name>javax.jdo.option.ConnectionURL</name> 
                <value>jdbc:mysql://node2:3306/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>123456</value> 
        </property> 
        <property>
                <name>hive.metastore.schema.verification</name> 
                <value>false</value> 
        </property>
        <property> 
                <name>datanucleus.schema.autoCreateAll</name>
                <value>true</value> 
        </property>

在master节点配置客户端

由于客户端需要和 Hadoop 通信,所以需要更改 Hadoop 中 jline 的版本。即 保留一个高版本的 jline jar 包,从 hive 的 lib 包中拷贝到 Hadoop 中 lib 位置为/opt/bigdata/hadoop-3.0.0/share/hadoop/yarn/lib。

cp /usr/hive/apache-hive-2.3.6-bin/lib/jline-2.12.jar  /opt/bigdata/hadoop-3.0.0/share/hadoop/yarn/lib/

同样修改 hive-env.sh

[root@master conf]# vi hive-site.xml 
<configuration>
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive_remote/warehouse</value> 
        </property> 
        <property>
                <name>hive.metastore.local</name> 
                <value>false</value> 
        </property>
        <property>
                <name>hive.metastore.uris</name> 
                <value>thrift://node1:9083</value> 
        </property>
</configuration> 

启动hive

在node1节点输入bin/hive(在/usr/hive/apache-hive-2.3.6-bin目录下输入)

同样在master输入  bin/hive

成功进入hive它会显示 hive>

在hive内输入: hive>show databases;

查看是否返回数据库列表,返回则成功。

同时输入jps查看进程会显示RunJar

HBase分布式数据库安装

HBASE优势:

1.线性扩展,随着数据量增多可以通过节点扩展进行支撑

2.数据存储在hdfs上,备份机制健全

3.通过zookeeper协调查找数据,访问速度快。

4.写入性能高,且几乎可以无限扩展。

5.海量数据下(100TB级别表)的查询依然能保持在5ms级别。

6.存储容量大,不需要做分库分表,切勿维护简单。

7.表的列可以灵活配置,1行可以有多个非固定的列。

HBase与关系型数据库的区别
HBaseRDBMS(关系型数据库)
硬件架构类似于Hadoop的分布式集群,硬件成本低廉传统的多核系统,硬件成本昂贵
容错性由软件架构实现,由于采用多节点,所以不存在一点或几点宕机一般需要额外硬件设备实现HA
数据库大小PBGB、TB
数据排布方式稀疏的、分布的多维的Map以行和列组织
数据类型Bytes丰富的数据类型
事务支持ACID只支持单个Row级别全面的ACID支持,对Row和表
查询语言只支持Java API(除非与其他框架一起使用,如Phoenix、Hive)SQL
索引只支持Row-Key(除非与其他框架一起使用,如Phoenix、Hive)支持
吞吐量百万查询/每秒数千查询/每秒

表1.4.2 HBase在Hadoop生态系统所处位置

1.环境准备

增加HBase组件

组件 进程 master node1 node2
HDFS NameNode
SecondaryNameNode
DataNode
Yarn(MapReduce2.0) ResourceManager
NodeManager
HIVE Hive Client
Hive Server
Mysqlserver
HIVE HBase Server
HBase Client

在表中我们可以看出,我们把HBase Server安装在node1节点,HBase Client安装在了master节点,MySql Server安装在node2节点。

本次安装需要软件包如下所示:

1.hbase-1.2.4-bin.tar.gz:HBase安装包

下载地址:https://hbase.apache.org/

2.jdk-8u171-linux-x64.tar.gz

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2.基础环境搭建

首先我们需要将java包解压并配置生效java环境变量(前面章节有)

然后我们配置hbase环境变量

vi /etc/profile

export HBASE_HOME=/usr/hbase/hbase-1.2.4

export PATH=\$PATH:\$HBASE_HOME/bin

生效下环境变量

source /etc/profile

然后创建hbase安装目录/usr/hbase,然后将hbase压缩包解压到安装目录

tar -zxvf hbase-1.2.4-bin.tar.gz -C /usr/hbase/

3.hbase配置 

修改配置文件hbase-env.sh

vi /usr/hbase/hbase-2.2.2/conf/hbase-env.sh 

export HBASE_MANAGES_ZK=false

export JAVA_HOME=/usr/java/jdk1.8.0_171

export HBASE_CLASSPATH=/opt/bigdata/hadoop-3.0.0/etc/hadoop/

配置hbase-site.xml

vi /usr/hbase/hbase-2.2.2/conf/hbase-site.xml
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.master</name>
                <value>hdfs://master:6000</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master,node1,node2</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/usr/zookeeper/zookeeper-3.4.10</value>
        </property>
</configuration>

 配置regionservers

vi /usr/hbase/hbase-2.2.2/conf/regionservers

node1

node2

拷贝文件到hdfs

cp /opt/bigdata/hadoop-3.0.0/etc/hadoop/hdfs-site.xml /usr/hbase/hbase-2.2.2/conf/

cp /opt/bigdata/hadoop-3.0.0/etc/hadoop/core-site.xml /usr/hbase/hbase-2.2.2/conf/

分发hbase包到其他节点

scp -r /usr/hbase/ node1:/usr/

scp -r /usr/hbase/ node2:/usr/

4.启动hbase

在保证hadoop和zookeeper启动的情况下我们输入

/usr/hbase/hbase-2.2.2/bin/start-hbase.sh

我们的hbase就启动了

使用jps查看进程

master节点出现HMaster

node1节点出现HRegionServer