付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.HIVE 安装使用说明一、 Hive 简介1.1.Hive 是什么Hadoop 作为分布式运算的基础架构设施,统计分析需要采用MapReduce编写程序后,放到Hadoop 集群中进行统计分析计算,使用起来较为不便,Hive 产品采用类似SQL 的语句快速实现简单的MapReduce统计,很大程度降低了Hadoop的学习使用成本。Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供基础的SQL查询功能 ,可以将 SQL语句转换为 MapReduce任务运行,而不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。1.2.部署架构Wo
2、rd 资料.Hive 中的 Driver为核心驱动部分,包括SQL语句的解释、编译为 MapReduce任务,并进行优化、执行。Hive 用户访问包括4 种运行和访问方式,一是CLI 客户端;二是HiveServer2 和 Beeline方式;三是 HCatalog/WebHCat 方式;四是HWI方式。其中 CLI、Beeline 均为控制台命令行操作模式, 区别在于 CLI 只能操作本地 Hive 服务,而 Beeline 可以通过 JDBC连接远程服务。HiveServer2 为采用 Thrift提供的远程调用接口,并提供标准的JDBC连接访问方式。HCatalog 是 Hadoop的元
3、数据和数据表的管理系统, WebHCat则提供一条 Restful 的 HCatalog 远程访问接口, HCatalog 的使用目前资料很少,尚未充分了解。HWI是 Hive Web Interface 的简称,可以理解为 CLI 的 WEB访问方式,因当前安装介质中未找到 HWI对应的 WAR文件,未能进行使用学习。Hive 在运行过程中,还需要提供MetaStore 提供对元数据(包括表结构、表与数据文件的关系等)的保存,Hive提供三种形式的MetaStore :一是内嵌 Derby 方式,该方式一般用演示环境的搭建;二是采用第三方数据库进行保存,例如常用的 MySQL等;三是远程接口
4、方式,及由 Hive 自身提供远程服务,供其他Hive 应用使用。在本安装示例中采用的第二种方式进行安装部署。备注:在本文后续的安装和说明中, 所有示例均以 HiverServer2 、Word 资料.Beeline 方式进行。另:因 Hive 在查询时性能较差, 后期拟计划采用SPARK或 Presto进行替代,因此本安装手册不对Hive 的集群方案进行描述。1.3.环境说明本安装示例在的虚拟器中进行安装,并提前安装配置 Hadoop。机器名IP 地址安装软件启用服务Hivehdfs1Hadoophdfs2HadoopMySQLhdfs3Hadoop二、 MySQL安装配置2.1. MySQ
5、L 安装登录到 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 restartWord 资料.2.2.创建 Hive 需要的数据库和用户$ mysql -uroot -p依次输入以下命令:# 创建 hive 用户insertintomysql . user ( Host , User , Password )va
6、lues ( "localhost", "hive", password ( "hive");# 创建数据库createdatabase hive;# 授权grantallon hive.*tohive '%' identifiedby 'hive'grantallon hive.*tohive 'localhost'identifiedby 'hive' ;flushprivileges;# 退出exit三、 Hive 安装3.1.下载 Hive从官网) 上下载最新的稳
7、定版本地址,并上传到服务器上。本安装示例采用的版本为。3.2.解压并配置环境变量解压安装文件到 /opt 目录$ tar/ opt修改环境变量$ sudovi/ etc / profile修改如下内容exportexportPATH="$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH":wqWord 资料.启用配置$ source/ etc / profile3.3.修改配置文件$ cd$HIVE_HOME/ hive-site.xml$ viconf / hive-site.xml修改以下内容的值<config
8、uration><property></name></value><description>JDBC connect string for a JDBC metastore</description></property><property></name></value><description>Driver class name for a JDBC metastore</description></property><property&
9、gt;</name><value> hive </value><description>password to use against metastore database</description></property><property></name><value> hive </value><description>Username to use against metastore database</description></prope
10、rty><property></name><value> /data/hive/scratach</value><description>Local scratch space for Hive jobs</description></property><property></name><value> /data/hive/download</value><description>Temporary local directory for add
11、ed resources in the remote filesystem. </description></property><property></name>Word 资料.<value> /data/hive/querylog</value><description>Location of Hive run time structured log file</description></property><property></name><value&
12、gt; /data/hive/operation_logs</value><description>Top level directory where operation logs are stored if loggingfunctionality is enabled</description></property>.</configuration>3.4.创建需要的目录$ mkdir/ data / hive$ mkdir/ data / hive / scratach$ mkdir/ data / hive / downloa
13、d$ mkdir/ data / hive / querylog$ mkdir/ data / hive / operation_logs3.5.上传 MySQL驱动将上传到 $HIVE_HOME/lib目录下。3.6.启动$ hiveserver23.7.基本操作验证$ beeline!connect jdbc:hive2:/hdfs1:10000输入当前用户名,密码为空或者直接输入$ ./bin/beelineu jdbc:hive2:/hdfs1:10000# 查看当前数据库show databases;Word 资料.# 查看所有表show tables;# 创建表createtabl
14、eusers ( user_idint , fname string, lname string);# 插入数据INSERT INTO users( user_id ,fname,lname )VALUES( 1,'john','smith');INSERT INTO users( user_id,fname,lname)VALUES( 2,'john','doe');INSERT INTO users( user_id,fname,lname)VALUES( 3,'john','smith');#
15、 查询数据select* from users limit 2;selectcount ( 1)from users;3.8.数据导入示例示例场景说明:先将输入导入到tmp_sell_day_corp_cig,再将数据写入 sell_day_corp_cig中。创建表createtabletmp_sell_day_corp_cig(sell_dstring,cig_codestring,stat_codestring,statyearsmallint,halfyearsmallint,quartersmallint,statmonthsmallint,stattendaysmallint,st
16、atdatesmallint,cig_provincestring,cig_factorystring,trademark_code string,cig_insidestring,cig_gradestring,cig_famousstring,cig_hundredstring,cig_kindstring,cig_lowstring,Word 资料.cig_seizurestring,sell_amountdouble ,sell_total_moneydouble ,gross_profitdouble ,demand_amountdouble)partitionedby( corp_
17、code string)ROWFORMATDELIMITED FIELDS TERMINATED BY ',' ;create tablesell_day_corp_cig(sell_dstring,cig_codestring,stat_codestring,statyearsmallint,halfyearsmallint,quartersmallint,statmonthsmallint,stattendaysmallint,statdatesmallint,cig_provincestring,cig_factorystring,trademark_codestring
18、,cig_insidestring,cig_gradestring,cig_famousstring,cig_hundredstring,cig_kindstring,cig_lowstring,cig_seizurestring,sell_amountdouble ,sell_total_moneydouble ,gross_profitdouble ,demand_amountdouble)partitionedby( corp_code string)clustered by( sell_d ) sorted by( cig_code ) INTO 16 BUCKETSSTOREDAS
19、orcfile;导入数据到临时表LOAD DATA LOCALINPATH '/home/whcyit/data.txt'OVERWRITE INTO TABLEtmp_sell_day_corp_cigpartition( corp_code ='11420101');Word 资料.启用分桶,写入正式表sethive. enforce . bucketing =true;INSERT OVERWRITETABLEsell_day_corp_cigpartition( corp_code ='11420101')selectsell_d , c
20、ig_code , stat_code, statyear, halfyear , quarter, statmonth, stattenday, statdate ,cig_province , cig_factory, trademark_code, cig_inside, cig_grade, cig_famous, cig_hundred, cig_kind, cig_low , cig_seizure, sell_amount , sell_total_money, gross_profit, demand_amountfromtmp_sell_day_corp_cigWHEREco
21、rp_code ='11420101'显示分区SHOW PARTITIONS sell_day_corp_cig;查询数据selectcount ( 1)from sell_day_corp_cig;selectsum( a. sell_amount), sum( a. sell_total_money), a. cig_code , a. corp_codefromsell_day_corp_cig agroupby a . cig_code , a. corp_code ;建立索引createindexidx_sell_day_corp_cigon tablesell_da
22、y_corp_cig( cig_code )withdeferredrebuildINTABLEidx_sell_day_corp_cig_table;alterindex idx_sell_day_corp_cigon sell_day_corp_cig rebuild;四、 HIVE 集群配置在 Hive 上述的安装配置中 MetaStore 和 HiverServer2( ThriftServer )两个部分存储单点问题, 对于 MetaStore 因采用数据库进行保存,需要使用数据库本身的方式实现高可用。对于HiverServer2的集群方式一般可以采用两种模式:一是采用 HAProx
23、y(四层应用集群)进行流量分发,二是采用ZooKeeper实现 Hive 集群配置。本安装仅说明采用ZooKeeper 实现 HiveServer2 的高可用方式。Word 资料.4.1. ZooKeeper高可用的原理4.2.修改 hive-site.xml配置<configuration><property></name><value> hdfs1:2181,hdfs2:2181,hdfs3:2181</value></property><property><property></prop
24、erty><property></name><value> hiveserver2</value></property></configuration>4.3.启动 HiveServer2$ $HIVE_HOME/bin/hiveserver24.3.验证集群启用$ zkCli.sh$ ls /hiveserver2Word 资料.4.4. 集群的使用JDBC或 ODBC采用以下方式进行连接jdbc:hive2:/<zookeeper_ensemble>serviceDiscoveryMode=zooKe
25、eper; zooKeeperNamespace=<hiveserver2_namespace>其中:<zookeeper_ensemble> ZooKeeper 地址和端口例如:String url ="jdbc:hive2:/hdfs1:2181, hdfs2:2181,hdfs3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"Connection con = DriverManager.getConnection (url,"whcyit&quo
26、t;,"" );备注:该连接方式不支持 beeline 客户端,当 JDBC驱动能够正常运行识别。五、 Hive 基础概念5.1. Hive与传统数据库的区别Hive 作为基于 Hadoop的数据仓库产品,虽然其采用类似数据库定义语言( DDL,create/drop/alter/truncate/show/describe)、数据库操作语言(DML:load/insert/update/delete/import/export)、SQL语言实现了数据的统计分析功能,但其与传统关系型数据库有着很大区别。但 Hive 同样在飞速发展中,越来越多的传统数据库特性在 Hive 中
27、得到了支持,例如: ACID事务特性、索引、视图等。不支持删除操作Hive 默认情况下不支持数据删除操作,如需要删除单条记录需要启动 hive 的测试模式,对于实际数据仓库类应用中应不存在类似应用。对于大批量删除,只能采用重新导入数据的方式进行覆盖。Word 资料.不支持存储过程Hive 没有提供存储过程的支持,对于复杂汇总依旧不能采用SQL进行有效处理。第三方提供了HPL/SQL的支持()还需要进一步的学习。不支持部分 SQL特性不支持主外键、条件约束;不支持类似 SQL中 in 的用法(子查询),可以采用 leftsemi join(半连接)进行替代;5.2. Hive支持的数据模型Hiv
28、e 中所有的数据都存储在HDFS 中, Hive 中包含以下数据模型: Table (表),External Table(外部表),Partition(分区),Bucket (桶)。Hive 中的 Table和数据库中的 Table在概念上是类似的, 每一个 Table在 Hive中都有一个相应的目录存储数据。例如,一个表app,它在 HDFS 中的路径为: /user/hive/warehouse/app。Partition(分区)对应于数据库中的Partition列的密集索引,但是 Hive中 Partition的组织方式和数据库中的很不相同。在Hive 中,表中的一个Partition对
29、应于表下的一个目录,所有的Partition的数据都存储在对应的目录中。Buckets (桶)对指定列计算hash ,根据 hash 值切分数据,目的是为了并行,每一个Bucket对应一个文件。Word 资料.External Table指向已经在HDFS 中存在的数据,可以创建Partition。它和 Table 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。Table(内部表)的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除
30、。External Table只有一个过程,加载数据和创建表同时完成( CREATEEXTERNALTABLELOCATION),实际数据是存储在LOCATION后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个 External Table 时,仅删除 hive 的元数据,不会删除hdfs 上对应的文件。5.3. Hive的数据存储格式Hive 支持以下存储格式:TextFile文本格式(默认)。SequenceFileSequenceFile 是 Hadoop API 提供的一种二进制文件,它将数据以<key,value> 的形式序列化到文件中RCFileRC
31、File 是 Hive 推出的一种专门面向列的数据格式。它遵循“先按列划分,再垂直划分”的设计理念。当查询过程中,针对它并不关Word 资料.心的列时,它会在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 、date字符类: string 、varchar 、char其它类: boolean 、binary备注:如需要使用presto 、Spark 等,建议采用数据类型尽量使用 string 、int 、float 、double ,不要使用 VARCHAR、DECIMAL等,部分第三方引擎无法提供支持。备注:通过目前初步的测试发现( 3.8 中的示例查询),TextFile查询约需要 37s;RCFile 查询需要 20s 左右;而 ORCFile 仅仅需要10s 左右的时间。六、 Hive 常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年客户数据分析与应用
- 2026年儿科轮状病毒肠炎补液护理与宣教
- 2026年急诊急性肺朊病毒课程精讲实训
- 2026年模具技术入股开发协议
- 2026年保密协议(中英文双语版)
- 医疗废物处理设施建设与运营指南(标准版)
- 宾馆酒店客房服务与管理规范
- 销售笔试题及答案
- 喷涂喷焊操作工节假日后复工安全考核试卷含答案
- 渔船安全与船员管理课件
- 柴油维修技术培训课件
- 2026院感知识考试题及答案
- 《红楼梦》导读 (教学课件) -高中语文人教统编版必修下册
- 室外供热管道安装监理实施细则
- DB43∕T 389-2010 安化黑茶千两茶
- 输变电标志牌安装施工方案
- 无张力尿道悬吊术护理
- 翰威特:2010年翰威特员工敬业度调研简介
- DL∕T 5210.6-2019 电力建设施工质量验收规程 第6部分:调整试验
- 新生儿机械通气指南
- 2023年PCB工程师年度总结及来年计划
评论
0/150
提交评论