赞
踩
Hive可以作为单机的交互式进程使用,如运行HIVE_HOME/bin/hive打开的交互式进程,该进程不需要服务进程(自带服务功能)。还可以作为服务(hiveserver2,服务模式,端口默认10000,web端口10002),此时用hive自带客户端HIVE_HOME/bin/beeline(还有Web客户端Hue)。Hive Server2可以配置Zookeeper,实现HA高可用。Hive2.x不再只支持hive-on-mr,未来可能不支持,建议使用spark或tez。Hive可以启动多个hiveserver2,使用Zookeeper做协调,和HBase相似,客户端访问Zookeeper。
Hql和MySQL命令相似。简单的计算,不需要生成MapReduce任务,举例:
select * from t1;
show databases;
use db1;
show tables;
Hive默认有一个default库,在warehouse顶级目录,创建的其他库在此目录下。默认选择default库。
Hive支持的存储格式包括:文本文件,列式存储文件,二进制文件,文件可以使用压缩。下面是关于格式和压缩的使用和说明(经过安装snappy的两个版本最后还是不能使用功能snappy,应该需要重新编译hadoop,可使用cdh的方案,省事,权限、兼容等一系列都给弄好了):
# Hadoop默认不支持snappy压缩,可以将支持的HADOOP_HOME/lib/native目录下的文件拷贝到自己的该目录下。 hadoop checknative # 命令查看支持内容,snappy默认是false。 hdfs getconf -confkey io.compression.codecs # 查看配置参数的值,默认值无法查到,可到https://hadoop.apache.org/docs/r2.7.6->Configuration下面去找。 vim ${HADOOP_HOME}/etc/hadoop/core-site.xml # 编辑文件以至此压缩格式等,参见下面文件修改详情。 vim ${HADOOP_HOME}/etc/hadoop/mapred-site.xml # 编辑文件以至此压缩格式等,参见下面文件修改详情。 # 然后安装snappy # 查看$HADOOP_HOME/lib/native下内容(原始): -rw-r--r--. 1 20415 101 1123566 4月 18 2018 libhadoop.a -rw-r--r--. 1 20415 101 1486932 4月 18 2018 libhadooppipes.a lrwxrwxrwx. 1 20415 101 18 4月 18 2018 libhadoop.so -> libhadoop.so.1.0.0 -rwxr-xr-x. 1 20415 101 673620 4月 18 2018 libhadoop.so.1.0.0 -rw-r--r--. 1 20415 101 581856 4月 18 2018 libhadooputils.a -rw-r--r--. 1 20415 101 364916 4月 18 2018 libhdfs.a lrwxrwxrwx. 1 20415 101 16 4月 18 2018 libhdfs.so -> libhdfs.so.0.0.0 -rwxr-xr-x. 1 20415 101 229193 4月 18 2018 libhdfs.so.0.0.0 # 安装cmake cd cmake-3.13.4 && ./bootstrap # 运行安装检查 make && make install # 编译和安装,make install将文件放到了/usr/local/bin下。 # 安装snappy,下载了snappy1.1.3和当前最新1.1.7,下面安装的是新版本 cd /root/packages && tar -zxf snappy-1.1.3.tar.gz && cd snappy-1.1.3 mkdir build # 创建一个目录用于cmake生成构建文件和配置文件 cd build && cmake ../ && make # 这一套编译完毕 make install # 安装,到/usr/local/lib64/libsnappy.a文件 # 又安装了snappy-1.1.3 cd /root/packages/snappy-1.1.3 && ./configure make && make install # 安装到/usr/local/lib/libsnappy开头的文件(.la/.a/.so/.so.1/.so.1.3.0) # Hive使用压缩:库文件和Hive命令都要设置 cp /usr/local/lib64/libsnappy.a /usr/local/hadoop/hadoop-2.7.6/lib/native/ # 首先库文件 # 执行hive命令:set hive.exec.compress.intermediate=true;(默认是false不使用压缩)中间传输数据启用压缩,这个还要求mapreduce.map.output.compress设为true及相关压缩器设置(前面已设置好,也可在hive中临时设置:set mapreduce.map.output.compress=true;),还需要设置set hive.exec.compress.output=true;(默认是false不使用压缩)输出启用压缩,这个还要求mapreduce.output.fileoutputformat.compress设为true(前面已设置好)。 # 最后折腾了半天hadoop的snappy压缩还是不能用,应该需要重新编译,使用带snappy参数的方式。暂时还是使用默认的压缩方式吧(需要将mapred-site.xml中的带有codec的设为org.apache.hadoop.io.compress.DefaultCodec)。
Hadoop下的core-site.xml配置文件修改内容如下:
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
</value>
<description>支持的压缩格式,默认是空</description>
</property>
Hadoop下的mapred-site.xml配置文件修改内容如下:
<property> <name>mapreduce.map.output.compress</name> <value>true</value> <description>mapper输出启用压缩,默认是false</description> </property> <property> <name>mapreduce.map.output.compress.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> <description>mapper输出使用的压缩器,默认是org.apache.hadoop.io.compress.DefaultCodec</description> </property> <property> <name>mapreduce.output.fileoutputformat.compress</name> <value>true</value> <description>reducer输出启用压缩,默认是false</description> </property> <property> <name>mapreduce.output.fileoutputformat.compress.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> <description>reducer输出使用的压缩器,默认是org.apache.hadoop.io.compress.DefaultCodec</description> </property> <property> <name>mapreduce.output.fileoutputformat.compress.type</name> <value>BLOCK</value> <description>reducer输出最终按块压缩,默认是RECORD按行</description> </property> `
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。