内容简介: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 介绍及使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning XML with DOM and Ajax
Sas Jacobs / Apress / 2006-06-05 / USD 39.99
Don't waste time on 1,000-page tomes full of syntax; this book is all you need to get ahead in XML development. Renowned web developer Sas Jacobs presents an essential guide to XML. Beginning XML with......一起来看看 《Beginning XML with DOM and Ajax》 这本书的介绍吧!