hive安装与配置,学习与总结
Hive是Hadoop项目中的一个子项目,由FaceBook向Apache基金会贡献。Hive被视为一个仓库工具,可以将结构化的数据文件映射为一张数据库表,并可以将sql语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive主要分为以下几个部分:
1.用户接口
用户接口主要有三个:命令行(CLI),客户端(Client) 和 Web界面(WUI)。
最常用的是 CLI,启动的时候,会同时启动一个 Hive 服务。
Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。
WUI 是通过浏览器访问 Hive的Web工具
2.元数据存储
Hive 将元数据存储在数据库中,如 MySQL或者Derby嵌入式数据库。
3. 执行 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
4. HDFS存储
Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。
安装与配置
下载到hive到/usr/local/src
tar zxvf hive-0.12.0.tar.gz
mv hive-0.12.0 /usr/local/hive
加入以下环境变量到/etc/profile
export PATH="$PATH:/usr/local/mysql/bin"
export HADOOP_HOME=/usr/local/hadoop-2.2.0
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_LIB=$HIVE_HOME/lib
export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:HIVE_LIB
export PATH= H I V E H O M E / b i n / : HIVE_HOME/bin/: HIVEHOME/bin/:PATH
source /etc/profile
修改配置文件
cd /usr/local/hive/conf
复制4个配置模板文件
cp hive-default.xml.template
……
新建配置文件 hive-site.xml 需提前装好mysql,并设置指定账号,给予权限
提前下载好java连接mysql工具包mysql-connector-java-5.1.22-bin.jar,放入HIVE_LIB中
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>hive.metastore.local
<value>true</value>
</property>
javax.jdo.option.ConnectionURL
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
</property>
javax.jdo.option.ConnectionDriverName
<value>com.mysql.jdbc.Driver</value>
</property>
javax.jdo.option.ConnectionUserName
<value>hive</value>
</property>
javax.jdo.option.ConnectionPassword
<value>hive</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
以hadoop身份执行hive
cd /usr/local
chown -R hadoop:hadoop hive
su hadoop
执行:hive
hive> CREATE TABLE pokes (foo INT, bar STRING);
hive> show tables;
OK
pokes
Time taken: 2.855 seconds, Fetched: 1 row(s)
hive>
hdfs dfs -ls /user/hive #查看hdfs中有关hive的文件
导入测试数据
hive> LOAD DATA LOCAL INPATH ‘./examples/files/kv1.txt’ overwrite into table pokes;
hive> select * from pokes;
执行一个计算任务
hive> select max(foo) as m from pokes;