`
xpenxpen
  • 浏览: 703520 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hive体验(win7 cygwin)

阅读更多
首先解释一下标题,为什么叫“hive体验”,是因为windows上并不能运行hive。
本人想在win7,cygwin平台上把hive试验出来,尝试了2个星期,试验了好几种hadoop和hive的版本,均以失败而告终。google搜索出来的各种信息也均表示windows上并不能运行hive,就连一向解燃眉之急的stackoverflow上搜索之也都是只有问题,没有回答。所以本人经历了N次失败后,决定暂时放弃了。

说一下我实验的步骤和结果:我是按照 官方Simple Example Use Cases 来做的,前面几步包括进入hive,执行show tables, CREATE TABLE,LOAD DATA都成功了,唯独卡在最后一步SELECT COUNT(*) FROM u_data上,屡次试验都以失败告终。

这里记录一下前面几步的步骤,对于想在windows上“体验”hive的同学来说也算是一个参考吧。


1.环境
以下两套试验成功(但最后一步SELECT COUNT(*) FROM u_data失败)

环境A环境B
win764bit64bit
cygwin64bit64bit
jdk1.6.0_43 64bit1.6.0_43 64bit
hadoop0.20.21.2.1
hive0.5.0-dev0.13.1


2.步骤
这里的步骤基于环境A来说的。

2.1 启动ssh

2.2 启动hadoop

2.3 进入hive
输入bin/hive

有些同志(包括我)启动hive后,然后出现 hive> 提示符后不管输入什么,命令行就是没有反应!我一开始还以为hive没装成功呢,然后搜到国外某个老兄的博客后发现原来这是cygwin的一个问题。
问题出在cygwin创建在桌面的快捷图标。
如果右键单击图标,会发现路径是
<cygwin_home>\bin\mintty.exe -i /Cygwin-Terminal.ico -
把他改为以下即可
<cygwin_home>\Cygwin.bat -i /Cygwin-Terminal.ico -

当然,不改也行,我们直接到<cygwin_home>目录下,然后双击Cygwin.bat就可以了

OK啦,我们用这种方法进入cygwin,然后进入到hive目录执行

$ bin/hive

Logging initialized using configuration in jar:file:/D:/opensource/hadoop/hive-0
.13.1/lib/hive-common-0.13.1.jar!/hive-log4j.properties
hive> show tables;
OK
Time taken: 0.523 seconds
hive>

这样就一切正常了。
这国外老兄怎么发现这个解决方案的,佩服佩服!


2.4 按照官方Simple Example Use Cases 来做

$ bin/hive
hive> show tables;
OK
Time taken: 8.05 seconds
hive>CREATE TABLE u_data (
       userid INT,
       movieid INT,
       rating INT,
       unixtime STRING)
     ROW FORMAT DELIMITED
     FIELDS TERMINATED BY '\t'
     STORED AS TEXTFILE;

OK
Time taken: 0.618 seconds
hive> show tables;
OK
u_data
Time taken: 0.091 seconds

下载数据http://files.grouplens.org/datasets/movielens/ml-100k.zip,解压复制到d盘

hive>LOAD DATA LOCAL INPATH 'd:\u.data'
OVERWRITE INTO TABLE u_data;


如果这句失败请换一种方法:
先把文件复制到hdfs中,然后再load from hdfs
hadoop fs -copyFromLocal d:/u.data /data/u.data

LOAD DATA INPATH '/data/u.data'
OVERWRITE INTO TABLE u_data;


以上都是成功的,然后下面最后这句死活不成功:
SELECT COUNT(*) FROM u_data;
SELECT COUNT(1) FROM u_data;

* hive0.5请用SELECT COUNT(1), 之后的版本请用SELECT COUNT(*)

3. 环境B的注意点
如果用hadoop1.2.1+hive1.13.1的话,以下点要注意:

3.1 需要下载改过的hadoop-core-1.2.1.jar
不改会报诸如此类的错:
Exception in thread "main" java.io.IOException:Failed to set permissions of path: to 0700
请参考http://yangshangchuan.iteye.com/blog/1839784并下载高手改过的hadoop-core-1.2.1.jar,然后替换原来的jar包。如果不想删原来的jar包那也一定要将它的扩展名改掉,比如改成hadoop-core-1.2.1.jar.bak。

3.2 忽略安全
修改hdfs-site.xml,增加如下配置
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>


然后步骤和2描述的一样,到最后这句还是失败:
SELECT COUNT(*) FROM u_data;

4.写在最后
最后,说一句,有linux条件的同学还是在linux上实验吧,因为在linux下是没有问题的。当然个人觉得把hadoop java api编程学好也可以了。毕竟感觉hive还是给不懂java的数据分析人员用的,hive只是把sql转换成map reduce程序罢了。不知道我理解的的对不对,欢迎指正
分享到:
评论
2 楼 xpenxpen 2015-05-25  
cuityang 写道
我也遇到同样的问题,输入什么都没响应,开始以为 cygwin上面没有mysql客户端导致的,然后在cygwin上装了mysql客户端,直到看了这个文章才解决问题了

请教下 你是怎么在国外网址上搜索 找到这个解决方案的,谢谢

google搜索,配合关键字,可以搜到。关键字是什么不记得了,反正就是cygwin hive hang 这几个组合吧。
1 楼 cuityang 2015-05-23  
我也遇到同样的问题,输入什么都没响应,开始以为 cygwin上面没有mysql客户端导致的,然后在cygwin上装了mysql客户端,直到看了这个文章才解决问题了

请教下 你是怎么在国外网址上搜索 找到这个解决方案的,谢谢

相关推荐

Global site tag (gtag.js) - Google Analytics