安装Hive

从[url]http://archive.cloudera.com/cdh/3/[/url]中下载hive-0.7.1-cdh3u1.tar.gz。
在安装了Hadoop的namenode上解压Hive:
$tar zxvf hive-0.7.1-cdh3u1.tar.gz -C /home/hadoop/cdh3 


修改hive安装目录下/conf/hive-env.sh.template中的HADOOP_HOME为实际的Hadoop安装目录;
添加环境变量
$sudo gedit /etc/profile

[quote]export HIVE_HOME=/home/hadoop/cdh3/hive-0.7.1-cdh3u1
export PATH=$PATH:HIVE_HOME/bin[/quote]

然后启动Hive
$hive

如果能够进入Hive的shell页面,并能浏览,则表示Hive已经可以使用了。
[quote]
hadoop@ubuntu:~$ hive
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201110241652_1651346475.txt
hive> show tables;
OK
Time taken: 3.496 seconds
[/quote]

在安装过程中,第一次启动Hive没有成功,后来在网上查到原因如下,并成功解决:
错误如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)


解决方法是,安装Hadoop时,修改Hadoop目录下/conf/hadoop-env.sh时,添加HADOOP_CLASSPATH变量覆盖了原有的变量,改成如下的形式即可:
HADOOP_CLASSPATH=[color=red]$HADOOP_CLASSPATH:[/color]....
红色为添加部分。问题解决。

这样安装的元数据保持在内嵌的数据库Derby中,只能允许一个会话连接,如果要支持多用户多会话,则需要一个独立的元数据库,目前比较流行的是使用MySQL,下面进行配置。

1)安装好MySQL服务器端和MySQL客户端,并启动MySQL服务。
[url]http://wadefall.iteye.com/admin/blogs/1209545[/url]

2)为Hive建立相应的MySQL帐号,并赋予足够的权限
进入MySQL控制台:
mysql -uroot -p

建立hive帐号
CREATE USER 'hive' IDENTIFIED BY 'hive';

赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;


用hive帐号测试远程登录
mysql -h localhost -u hive -p


3) 建立Hive专用的元数据库
create database hive


4)在本地安装MySQL客户端

5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost: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>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root123</value>
<description>password to use against metastore database</description>
</property>



6)把MySQL的JDBC驱动包(我使用的是mysql-connector-java-5.1.16-bin.jar)复制到Hive的lib目录下。

7)启动Hive shell,执行
show tables;

如果不报错,表明基于独立元数据库的Hive已经安装成功了。

查看一下元数据的效果。
在Hive上建立数据表
CREATE TABLE my(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

show tables;

select name from my;


然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。
[quote]mysql> use hive
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+-----------------+
| Tables_in_hive |
+-----------------+
| BUCKETING_COLS |
| COLUMNS |
| DATABASE_PARAMS |
| DBS |
| PARTITION_KEYS |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SORT_COLS |
| TABLE_PARAMS |
| TBLS |
+-----------------+
13 rows in set (0.00 sec)

mysql> select * from TBLS;
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | RETENTION | SD_ID | TBL_NAME | TBL_TYPE | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| 1 | 1319445990 | 1 | 0 | hadoop | 0 | 1 | my | MANAGED_TABLE | NULL | NULL |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
1 row in set (0.00 sec)
[/quote]
在TBLS中可以看到Hive表的元数据。


Hive web service,Hive web接口,启动方法:
[url]https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface[/url]
export ANT_LIB=$ANT_HOME/lib

hive --service hwi


然后打开http://ip:9999/hwi/就能看到Hive的web页面。
### Hive 安装教程 以下是关于 Hive安装步骤及其相关内容: #### 1. 环境准备 为了成功安装和配置 Hive,需要满足以下前提条件: - JDK 版本需为 1.8 或更高版本[^2]。 - MySQL 数据库版本应为 5.7 或以上,用于存储 Hive 的元数据[^2]。 - Hadoop 需要已安装并正常运行,建议版本为 2.2.0 或更新版本[^2]。 #### 2. 下载与解压 Hive 从 Apache 官方网站或其他可信源下载适合的 Hive 压缩包(推荐版本为 2.3.1),将其解压缩到目标路径。假设解压后的目录名为 `apache-hive-2.3.1-bin`[^2]。 #### 3. 修改环境变量 编辑系统的环境变量文件(如 `.bashrc` 或 `/etc/profile`),添加如下内容以设置 Hive 路径: ```bash export HIVE_HOME=/path/to/apache-hive-2.3.1-bin export PATH=$PATH:$HIVE_HOME/bin ``` 执行 `source ~/.bashrc` 或 `source /etc/profile` 来使更改生效。 #### 4. 创建 MySQL 元数据库 在 MySQL 中创建一个新的数据库供 Hive 使用,并赋予相应的权限给指定用户。例如: ```sql CREATE DATABASE hive_db; GRANT ALL PRIVILEGES ON hive_db.* TO 'hive_user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` #### 5. 初始化 Hive Schema 通过以下命令初始化 Hive 的 MySQL schema: ```bash schematool -dbType mysql -initSchema ``` 此命令会基于 MySQL 连接信息构建必要的表结构[^3]。 #### 6. 启动 Hive 可以通过两种方式启动 Hive: - **命令行模式**:直接输入 `hive` 即可进入交互式 Shell[^4]。 - **Beeline JDBC 方式**:先启动 HiveServer2 服务再连接客户端。具体操作如下: ```bash $HIVE_HOME/bin/hiveserver2 & beeline -u jdbc:hive2://localhost:10000 ``` #### 示例代码展示 下面是一个简单的 Hive SQL 执行例子: ```sql -- 创建测试数据库 CREATE DATABASE IF NOT EXISTS test_db; -- 查看当前所有数据库 SHOW DATABASES; -- 切换至新创建的数据库 USE test_db; -- 构建一张样例表 CREATE TABLE example_table ( id INT, name STRING ); -- 插入几条记录 INSERT INTO example_table VALUES (1, 'Alice'), (2, 'Bob'); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值