
Hive数据仓库安装
Hive数据仓库安装
mapreduce 程序编写
1-1Hive与传统结构化查询语言对比
HiveQL | SQL(结构化查询语言) | |
ANSI SQL | 不完全支持 | 支持 |
更新 | insert OVERWRITE\INTO TABLE | UPDATE\INSERT\DELETE |
事务 | 不支持 | 支持 |
模式 | 读模式 | 写模式 |
数据保存 | HDFS | 块设备、本地文件系统 |
延时 | 高 | 低 |
多表插入 | 支持 | 不支持 |
子查询 | 完全支持 | 只能用在From子句中 |
视图 | Read-only | Updatable |
可扩展性 | 高 | 低 |
数据规模 | 大 | 小 |
1-2 Hive在Hadoop生态系统所处位置
环境准备
组件 | 进程 | 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与关系型数据库的区别 | ||
---|---|---|
HBase | RDBMS(关系型数据库) | |
硬件架构 | 类似于Hadoop的分布式集群,硬件成本低廉 | 传统的多核系统,硬件成本昂贵 |
容错性 | 由软件架构实现,由于采用多节点,所以不存在一点或几点宕机 | 一般需要额外硬件设备实现HA |
数据库大小 | PB | GB、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