木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺

Ubuntu9.0 下安装 hive 0.8.1

下载地址: http://mirrors.cnnic.cn/apache/hive/hive-0.8.1/
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive定义


Hive[1] 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。

把hive-0.8.1.tar.gz 放到当前的用户目录下。
解压hive-0.8.1.tar.gz 包 ,tar -vxzf hive-0.8.1.tar.gz
进入 hive-0.8.1 目录       cd hive-0.8.1
进入conf 目录下 复制 并修改 hive-site.xml  cp hive-default.xml.template hive-site.xml
修改hive-site.xml 配置,使用mysql 做为 hive的存储元数据的物理位置。
 sudo gedit hive-site.xml
 主要配置如下:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.46.1:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
  <description>password to use against metastore database</description>
</property>
<!-- 这是一个默认的存放目录-->
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>
这些配置很简单,一个是数据路径,一个是数据库驱动,用户名和密码。
注:由于在linux下安装mysql 出了问题,所以数据库的路径可以是连到另外的一台windows 下的mysql.
保存 hive-site.xml
source hive-site.xml
把hive-0.8.1 的安装目录配置到系统中。
sudo gedit /etc/profile
export HIVE_HOME=/home/liucheng/hive-0.8.1
同时要配置到 path 中。
source /etc/profile
这样初步配置完了hive。
第二步:我们给hive 配置用户。使用root 登陆mysql
create user 'hive'@'%' identified by 'hive';  //添加hive 用户名 密码也为hive
grant all privileges on *.* to 'hive'@'%' with grant option; //赋予权限
flush privileges;// 强制写出
接下来就可以使用 hive 登陆mysql了 图h00001.jpg


第三步:到linux命令下启动hive
cd hive-0.8.1
./bin/hive 
就启动了hive
重新启动是 ./bin/hive restart
查看 hive 用户下的mysql ,会新建一个库为hive.同时,有几个表。

创建一个示例表。

hive> CREATE TABLE baobei_info (
    >   id INT,
    >   owner_id INT);
会报一个异常。

hive> CREATE TABLE baobei_info (
    >   id INT,
    >   owner_id INT);
FAILED: Error in metadata: javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
    at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)....

这个是hive 对mysql 的utf8 编码有问题 ,mysql 的默认字符集是utf8 不是 UTF-8.

alter database hive character set latin1; 
然后,再创建一次就可以了,如图:



看一下,创建后的表在mysql 数据库中。


多了几个表,那么哪几个表是存储我新建的表内容呢。


看一下,这个表在 /user/hive/warehouse

注:存储hive 的hdfs 的目录 具体目录是hdfs://localhost:9000/user/hive/warehouse/

    当我们要查看hive目录下的文件只能是上述的命令,因为 user目录下hive 与 当前用户(soliucheng)是同一级目录,可以到50070端口下查看这个文件夹。


  当使用./bin/hadoop fs -ls 只能查看到soliucheng 下的hdfs 文件夹。


posted @ 2013-03-29 12:15  C语言程序  阅读(184)  评论(0编辑  收藏  举报
木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺