内容简介:Hive 是 Hadoop 生态中必不可少的工具,提供了 SQL 方言用于查询存储在HDFS 中的数据和其他与 Hadoop 集成的文件系统(Amazon S3 ,HBase 数据库,Cassandra 的数据)Hive 最适合数据仓库应用,使用应用进行相关静态数据分析,不需要快速响应得到结果,数据本身不会频繁发生变化。Hive 不是完整的数据库,Hadoop 和 HDFS 的设计约束和局限限制了 Hive 所能胜任的工作。最大的限制就是 Hive 不支持记录级别的更新、插入或者删除。Hive 不支持 OL
Hive 是 Hadoop 生态中必不可少的工具,提供了 SQL 方言用于查询存储在HDFS 中的数据和其他与 Hadoop 集成的文件系统(Amazon S3 ,HBase 数据库,Cassandra 的数据)
Hive 最适合数据仓库应用,使用应用进行相关静态数据分析,不需要快速响应得到结果,数据本身不会频繁发生变化。Hive 不是完整的数据库,Hadoop 和 HDFS 的设计约束和局限限制了 Hive 所能胜任的工作。最大的限制就是 Hive 不支持记录级别的更新、插入或者删除。
Hive 不支持 OLTP(联机事务处理)而更接近 OLAP(联机分析技术),如果要对大规模数据使用 OLTP,应该使用 NoSQL 数据库,例如 HBase 等。和大多数 SQL 方言一样,HiveQL 不符合 ANSI SQL 标准,和 常规的 MySQL,SQL Server 支持的 SQL 有很多方面差异,HiveQL 和 MySQL 提供的 SQL 方言最接近。
安装 Hive 运行环境
Hive 的运行依赖很多环境,需要一一配置
JDK
首先保证 Java 运行环境,jdk 1.7 及以上
java -version
验证
Hadoop 环境搭建
下载 tar,解压,配置环境变量
export HADOOP_HOME=/usr/local/hadoop export HADDOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_INSTALL=$HADOOP_HOME
配置完可以查看下版本:
hadoop version
配置文件
配置 core-site.xml
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>
配置 hdfs-site.xml
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value> </property> <property> <name>dfs.data.dir</name> <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value > </property>
配置 yarn-site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
配置 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
添加如下
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property
验证,首先格式化 namenode
hdfs namenode -format
启动 Hadoop dfs
start-dfs.sh
启动 Yarn Script
start-yarn.sh
安装成功后访问
http://localhost:50070/ http://localhost:8088/
Hive 的大多数工作是使用 Hadoop 的 job,Hive 的行为可以反映出用户所使用的 Hadoop 运行模式。
Hive 环境搭建
下载 tar,解压,配置环境变量(根据不同的路径配置)
wget http://archive.apache.org/dist/hive/hive-2.1.0/apache-hive-2.1.0-bin.tar.gz tar -xzf apache-hive-2.1.0-bin.tar.gz export HIVE_HOME=/home/einverne/apache-hive-2.1.0-bin export PATH=$PATH:$HIVE_HOME/bin
配置
cd $HIVE_HOME/conf cp hive-env.sh.template hive-env.sh
编辑 hive-env.sh
export HADOOP_HOME=/usr/local/hadoop
配置 hive-site.xml
cp hive-default.xml.template hive-site.xml
使用 hive 内置的 derby (Apache Derby 非常小巧,核心部分 derby.jar 只有 2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用),初始化 Derby 数据库:
schematool -initSchema -dbType derby
验证
hive --version
进入 hive 之后
hive> show databases;
查看结果。默认会有一个 default 数据库,至此所有的安装都完成了。
Hive 目录的一些说明:
$HIVE_HOME/lib $HIVE_HOME/bin
Hive 的安装总体过程比较复杂可以具体参考 这里
问题
启动 start-dfs.sh
时遇到
19/01/29 18:36:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
需要配置如下环境变量:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
关于使用 derby 的问题,hive 内嵌一个 derby ,如果要使用内嵌的 derby 那么在 hive-site.xml
中需要配置连接字串为:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:metastore_db;create=true</value> <description>JDBC connect string for a JDBC metastore </description> </property>
而如果选择单独启动 derby 那么需要配置:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby://localhost:1527/metastore_db;create=true </value> <description>JDBC connect string for a JDBC metastore </description> </property>
而这个时候则需要 单独的配置启动 derby .
使用
Metastore
Hive 的元数据都存放在 metastore 中,包括:服务和后台数据。metastore 的配置有三种方式:
- 内置 metastore
- 本地 metastore
- 远程 metastore
在上面的安装步骤中,使用了内置的 Derby 数据库,但这个只适用于本地试验,如果要部署到生产环境还是需要单独配置 Metastore 数据库,使用外部的 Derby 或者 MySQL 等等。
当使用内置的 Derby 并且在本地一个目录中启动终端 hive,那么进入 hive shell 时,hive 默认会在当前目录下生成一个 metastore_db 目录,用来保存在 Shell 中的 sql 结果,新建的表,添加的分区等等。
这种存储方式导致同一个目录只能同时有一个 hive 客户端访问,切换目录使用 shell 时,无法查看之前创建的表。
如果要使用 MySQL 那么需要配置几点。首先将 mysql-jdbc-driver.jar 拷贝到 $HIVE_HOME/lib
目录下,然后配置 hive-site.xml 文件
<property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/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>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property>
数据库相关
CREATE DATABASE demo; CREATE DATABASE IF NOT EXISTS demo; SHOW DATABASES; SHOW DATABASE LIKE 'd.*'; DESCRIBE DATABASE demo;
表
CREATE TABLE IF NOT EXISTS mydb.employees ( name STRING COMMENT 'name', age INT COMMENT 'age', salary FLOAT COMMENT 'salary', subordinates ARRAY<STRING> COMMENT 'Names of subordinates', deductions MAP<STRING, FLOAT> COMMENT 'Keys are deductions name, values are percentages', address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT> COMMENT 'Home address' ) COMMENT 'Description of the table' TBLPROPERTIES ('creator'='me', 'create_at'='2019-01-01 00:00:00') LOCATION '/user/hive/warehouse/mydb.db/employees'; DROP TABLE IF EXISTS employees;
reference
以上所述就是小编给大家介绍的《Hive SQL 介绍及使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
分布式机器学习:算法、理论与实践
刘铁岩、陈薇、王太峰、高飞 / 机械工业出版社 / 2018-10-20 / 89.00
人工智能和大数据时代,解决最有挑战性问题的主流方案是分布式机器学习!本书旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。 由微软亚洲研究院机器学习核心团队潜心力作!鄂维南院士、周志华教授倾心撰写推荐序! 本书旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。 全书共12章。第1章是绪论,向大家展......一起来看看 《分布式机器学习:算法、理论与实践》 这本书的介绍吧!