ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:356.50KB ,
资源ID:11080496      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-11080496.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(HIVE安装使用说明.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

HIVE安装使用说明.doc

1、 1 / 16HIVE 安装使用说明一、 Hive 简介1.1. Hive 是什么Hadoop 作为分布式运算的基础架构设施,统计分析需要采用MapReduce 编写程序后,放到 Hadoop 集群中进行统计分析计算,使用起来较为不便,Hive 产品采用类似 SQL 的语句快速实现简单的MapReduce 统计,很大程度降低了 Hadoop 的学习使用成本。Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供基础的 SQL 查询功能,可以将SQL 语句转换为 MapReduce 任务运行,而不必开发专门的MapReduce 应用,十分适合数据仓库

2、的统计分析。1.2. 部署架构2 / 16Hive 中的 Driver 为核心驱动部分,包括 SQL 语句的解释、编译为MapReduce 任务,并进行优化、执行。Hive 用户访问包括 4 种运行和访问方式,一是 CLI 客户端;二是HiveServer2 和 Beeline 方式;三是 HCatalog/WebHCat 方式;四是HWI 方式。其中 CLI、Beeline 均为控制台命令行操作模式,区别在于 CLI 只能操作本地 Hive 服务,而 Beeline 可以通过 JDBC 连接远程服务。HiveServer2 为采用 Thrift 提供的远程调用接口,并提供标准的JDBC 连接

3、访问方式。HCatalog 是 Hadoop 的元数据和数据表的管理系统,WebHCat 则提供一条 Restful 的 HCatalog 远程访问接口,HCatalog 的使用目前资料很少,尚未充分了解。HWI 是 Hive Web Interface 的简称,可以理解为 CLI 的 WEB 访问方式,因当前安装介质中未找到 HWI 对应的 WAR 文件,未能进行使用学习。Hive 在运行过程中,还需要提供 MetaStore 提供对元数据(包括表结构、表与数据文件的关系等)的保存,Hive 提供三种形式的MetaStore:一是内嵌 Derby 方式,该方式一般用演示环境的搭建;二是采用第

4、三方数据库进行保存,例如常用的 MySQL 等;三是远程接口方式,及由 Hive 自身提供远程服务,供其他 Hive 应用使用。在本安装示例中采用的第二种方式进行安装部署。备注:在本文后续的安装和说明中,所有示例均以3 / 16HiverServer2、Beeline 方式进行。另:因 Hive 在查询时性能较差,后期拟计划采用 SPARK 或Presto 进行替代,因此本安装手册不对 Hive 的集群方案进行描述。1.3. 环境说明本安装示例在 Ubuntu 14.04.3 的虚拟器中进行安装,并提前安装配置 Hadoop。机器名 IP 地址 安装软件 启用服务hdfs1 10.68.19.

5、184HiveHadoophdfs2 10.68.19.182 Hadoophdfs3 10.68.19.183MySQLHadoop二、 MySQL 安装配置2.1. MySQL 安装登录到 hdfs3 中,安装 MySQL 服务器。$ sudo apt-get install mysql-server修改 my.cfg 的配置文件$ sudo vi /etc/mysql/my.cfg修改内容如下:bind-address = 10.68.19.183:wq重新启动 mysql 服务$ sudo service mysql restart4 / 162.2. 创建 Hive 需要的数据库和用

6、户$ mysql -uroot -p依次输入以下命令:# 创建 hive 用户insert into mysql.user(Host,User,Password) values(“localhost“,“hive“,password(“hive“);# 创建数据库create database hive;# 授权grant all on hive.* to hive% identified by hive;grant all on hive.* to hivelocalhost identified by hive;flush privileges;# 退出exit三、 Hive 安装3.1.

7、 下载 Hive从官网(http:/hive.apache.org/downloads.html)上下载最新的稳定版本地址,并上传到服务器上。本安装示例采用的版本为 apache-hive-1.2.1-bin.tar.gz。3.2. 解压并配置环境变量解压安装文件到/opt 目录$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt修改环境变量$ sudo vi /etc/profile修改如下内容export HIVE_HOME=/opt/hive-1.2.1export PATH=“$JAVA_HOME/bin:$HADOOP_HOME/bin:$

8、HIVE_HOME/bin:$PATH“:wq5 / 16启用配置$ source /etc/profile3.3. 修改配置文件$ cd $HIVE_HOME$ cp conf/hive-default.xml.template conf/hive-site.xml$ vi conf/hive-site.xml修改以下内容的值javax.jdo.option.ConnectionURLjdbc:mysql:/10.68.19.183:3306/hiveJDBC connect string for a JDBC metastorejavax.jdo.option.ConnectionDriv

9、erNamecom.mysql.jdbc.DriverDriver class name for a JDBC metastorejavax.jdo.option.ConnectionPasswordhivepassword to use against metastore databasejavax.jdo.option.ConnectionUserNamehiveUsername to use against metastore databasehive.exec.local.scratchdir/data/hive/scratachLocal scratch space for Hive

10、 jobshive.downloaded.resources.dir/data/hive/downloadTemporary local directory for added resources in the remote file system.6 / 16hive.querylog.location/data/hive/querylogLocation of Hive run time structured log filehive.server2.logging.operation.log.location/data/hive/operation_logsTop level direc

11、tory where operation logs are stored if logging functionality is enabled.3.4. 创建需要的目录$ mkdir /data/hive$ mkdir /data/hive/scratach$ mkdir /data/hive/download$ mkdir /data/hive/querylog$ mkdir /data/hive/operation_logs3.5. 上传 MySQL 驱动将 mysql-connector-java-5.1.36.jar 上传到$HIVE_HOME/lib 目录下。3.6. 启动$ hi

12、veserver23.7. 基本操作验证$ beeline!connect jdbc:hive2:/hdfs1:10000输入当前用户名,密码为空或者直接输入$ ./bin/beeline u jdbc:hive2:/hdfs1:100007 / 16# 查看当前数据库show databases;# 查看所有表show tables;# 创建表create table users(user_id int, fname string,lname string );# 插入数据INSERT INTO users (user_id, fname, lname) VALUES (1, john, s

13、mith);INSERT INTO users (user_id, fname, lname) VALUES (2, john, doe);INSERT INTO users (user_id, fname, lname) VALUES (3, john, smith);# 查询数据select * from users limit 2;select count(1) from users;3.8. 数据导入示例示例场景说明:先将输入导入到 tmp_sell_day_corp_cig,再将数据写入 sell_day_corp_cig 中。创建表create table tmp_sell_day

14、_corp_cig(sell_d string,cig_code string,stat_code string,statyear smallint,halfyear smallint,quarter smallint,statmonth smallint,stattenday smallint,statdate smallint,cig_province string,cig_factory string,trademark_code string,8 / 16cig_inside string,cig_grade string,cig_famous string,cig_hundred s

15、tring,cig_kind string,cig_low string,cig_seizure string,sell_amount double,sell_total_money double,gross_profit double,demand_amount double)partitioned by (corp_code string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ,;create table sell_day_corp_cig(sell_d string,cig_code string,stat_code string,staty

16、ear smallint,halfyear smallint,quarter smallint,statmonth smallint,stattenday smallint,statdate smallint,cig_province string,cig_factory string,trademark_code string,cig_inside string,cig_grade string,cig_famous string,cig_hundred string,cig_kind string,cig_low string,cig_seizure string,sell_amount

17、double,sell_total_money double,gross_profit double,demand_amount double)partitioned by (corp_code string)clustered by(sell_d) sorted by(cig_code) INTO 16 BUCKETSSTORED AS orcfile;9 / 16导入数据到临时表LOAD DATA LOCAL INPATH /home/whcyit/data.txt OVERWRITE INTO TABLE tmp_sell_day_corp_cig partition(corp_code

18、=11420101);启用分桶,写入正式表set hive.enforce.bucketing = true;INSERT OVERWRITE TABLE sell_day_corp_cig partition(corp_code=11420101)select sell_d,cig_code,stat_code,statyear,halfyear,quarter,statmonth,stattenday,statdate,cig_province,cig_factory,trademark_code,cig_inside,cig_grade,cig_famous,cig_hundred,ci

19、g_kind,cig_low,cig_seizure,sell_amount,sell_total_money,gross_profit,demand_amount from tmp_sell_day_corp_cig WHERE corp_code=11420101;显示分区SHOW PARTITIONS sell_day_corp_cig;查询数据select count(1) from sell_day_corp_cig;select sum(a.sell_amount),sum(a.sell_total_money),a.cig_code,a.corp_code from sell_d

20、ay_corp_cig a group by a.cig_code,a.corp_code;建立索引create index idx_sell_day_corp_cig on table sell_day_corp_cig(cig_code)as pact.CompactIndexHandlerwith deferred rebuildIN TABLE idx_sell_day_corp_cig_table;alter index idx_sell_day_corp_cig on sell_day_corp_cig rebuild;四、 HIVE 集群配置在 Hive 上述的安装配置中 Met

21、aStore 和HiverServer2(ThriftServer )两个部分存储单点问题,对于10 / 16MetaStore 因采用数据库进行保存,需要使用数据库本身的方式实现高可用。对于 HiverServer2 的集群方式一般可以采用两种模式:一是采用 HAProxy(四层应用集群)进行流量分发,二是采用ZooKeeper 实现 Hive 集群配置。本安装仅说明采用 ZooKeeper 实现HiveServer2 的高可用方式。4.1. ZooKeeper 高可用的原理4.2. 修改 hive-site.xml 配置hive.zookeeper.quorumhdfs1:2181,hdf

22、s2:2181,hdfs3:2181hive.server2.support.dynamic.service.discoverytruehive.server2.zookeeper.namespacehiveserver211 / 164.3. 启动 HiveServer2$ $HIVE_HOME/bin/hiveserver24.3. 验证集群启用$ zkCli.sh$ ls /hiveserver24.4.集群的使用JDBC 或 ODBC 采用以下方式进行连接jdbc:hive2:/;serviceDiscoveryMode=zooKeeper; zooKeeperNamespace=其中

23、:ZooKeeper 地址和端口例如:String url = “jdbc:hive2:/hdfs1:2181, hdfs2:2181, hdfs3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2“;Connection con = DriverManager.getConnection(url, “whcyit“, “);备注:该连接方式不支持 beeline 客户端,当 JDBC 驱动能够正常运行识别。五、 Hive 基础概念5.1. Hive 与传统数据库的区别Hive 作为基于 Hadoop 的数据

24、仓库产品,虽然其采用类似数据库定义语言(DDL,create/drop/alter/truncate/show/describe) 、数据库操作语言(DML:load/insert/update/delete/import/export) 、SQL 语言实现了数据的统计分析功能,但其与传统关系型数据库有着很大12 / 16区别。但 Hive 同样在飞速发展中,越来越多的传统数据库特性在Hive 中得到了支持,例如:ACID 事务特性、索引、视图等。 不支持删除操作Hive 默认情况下不支持数据删除操作,如需要删除单条记录需要启动 hive 的测试模式,对于实际数据仓库类应用中应不存在类似应用。

25、对于大批量删除,只能采用重新导入数据的方式进行覆盖。 不支持存储过程Hive 没有提供存储过程的支持,对于复杂汇总依旧不能采用 SQL进行有效处理。第三方提供了 HPL/SQL 的支持(http:/www.hplsql.org/download)还需要进一步的学习。 不支持部分 SQL 特性不支持主外键、条件约束;不支持类似 SQL 中 in 的用法(子查询) ,可以采用 left semi join(半连接)进行替代;5.2. Hive 支持的数据模型Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table(表) ,External Table(外部表) ,Pa

26、rtition(分区) ,Bucket(桶) 。Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 app,它在 HDFS 中的路径为:/user/hive/warehouse/app 。13 / 16Partition(分区)对应于数据库中的 Partition 列的密集索引,但是 Hive 中 Partition 的组织方式和数据库中的很不相同。在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中。Buckets (桶)

27、对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。External Table 指向已经在 HDFS 中存在的数据,可以创建 Partition。它和 Table 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。Table(内部表)的创建过程和数据加载过程(这两个过程可以在同一个语句中完成) ,在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。External Table 只有一个过程,加载数据和创建表同时完成(CREATE EXTERN

28、AL TABLE LOCATION) ,实际数据是存储在 LOCATION 后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个 External Table 时,仅删除 hive 的元数据,不会删除 hdfs 上对应的文件。5.3. Hive 的数据存储格式Hive 支持以下存储格式: TextFile文本格式(默认) 。14 / 16 SequenceFileSequenceFile 是 Hadoop API 提供的一种二进制文件,它将数据以的形式序列化到文件中 RCFileRCFile 是 Hive 推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计

29、理念。当查询过程中,针对它并不关心的列时,它会在 IO 上跳过这些列。 ORCFile全称为 Optimized Row Columnaer file,针对 RCFile 存储格式进行一些优化。 AvroAvro 是一种用于支持数据密集型的二进制文件格式。它的文件格式更为紧凑,若要读取大量数据时,Avro 能够提供更好的序列化和反序列化性能。5.4. Hive 支持的数据类型数值类:tinyint(1 字节) 、smallint(2 字节)、int(4 字节) 、bigint(8 字节) 、float(4 字节) 、double(8 字节) 、decimal时间类:timestamp 、dat

30、e字符类:string 、varchar、char其它类:boolean、binary备注:如需要使用 presto、Spark 等,建议采用数据类型尽量使用 string、int、float、double,不要使用 VARCHAR、DECIMAL 等,部15 / 16分第三方引擎无法提供支持。备注:通过目前初步的测试发现(3.8 中的示例查询) ,TextFile查询约需要 37s;RCFile 查询需要 20s 左右;而 ORCFile 仅仅需要 10s左右的时间。六、 Hive 常用操作本部分只是部分常用 Hive 的操作指令,详细内容请查看官网WIKI 上的内容(https:/cwik

31、i.apache.org/confluence/display/Hive/Home) 。6.1. 新建表CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS db_name.table_name(col_name data_type COMMENT col_comment, .)COMMENT table_commentPARTITIONED BY (col_name data_type COMMENT col_comment, .)CLUSTERED BY (col_name, col_name, .) SORTED BY (col_name ASC|D

32、ESC, .) INTO num_buckets BUCKETSROW FORMAT row_format STORED AS file_format| STORED BY storage.handler.class.name WITH SERDEPROPERTIES (.)LOCATION hdfs_path6.2. 复制表结构CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS db_name.table_nameLIKE existing_table_nameLOCATION hdfs_path;6.3. 删除表DROP TABLE IF EXIST

33、S table_name;6.4. 重命名表ALTER TABLE table_name RENAME TO new_table_name;16 / 166.5. 数据加载LOAD DATA LOCAL INPATH filepath OVERWRITE INTO TABLE tablename PARTITION (partcol1=val1, partcol2=val2 .)6.6. 数据导出EXPORT TABLE tablename PARTITION (part_column=“value“, .)TO export_target_path备注:路径为 HDFS 上的路径6.7. 数据导入IMPORT EXTERNAL TABLE new_or_original_tablename PARTITION (part_column=“value“, .)FROM source_pathLOCATION import_target_path备注:路径为 HDFS 上的路径

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报