|
这是成功的截图:
一.折磨了我几天的hive安装,我已经不知道还如何总结我的失败原因,可能有以下几点吧:
1.hive官网的是32位的,之前我一直是在官网下的,0.13.1、0.14.0、1.1.0几个版本都试过,没有一个成功的。后来下载了hive-0.13.1编译后版本。安装成功了。
下载链接:http://download.csdn.net/download/manburen01/7748459
2.网上各种hive安装的帖子,各有差异,看得人头昏眼花、不知所措,下文我会贴出我的详细步骤,是我亲身实践过的。在此特别感谢坛友pig2、韩克拉玛寒的帮助。
参考链接:
http://www.aboutyun.com/thread-7788-1-1.html
http://www.aboutyun.com/thread-6902-1-1.html
http://www.aboutyun.com/thread-7881-1-1.html
http://www.aboutyun.com/thread-11131-1-1.html
二.我的详细步骤,亲身实践!!
1.环境:
ubuntu14.04、hadoop-2.6.0
2.步骤:
hive安装
1.mysql安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-mysql(安装php5-mysql 是将php和mysql连接起来,这个可以不要!)
安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:
sudo netstat -tap | grep mysql
当您运行该命令时,您可以看到类似下面的行:
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
查看3306端口有没开启:
sudo netstat -ant
如果没有看到对应的记录就重启Mysql
sudo /etc/init.d/mysql restart
2.进入mysql
mysql -uroot -p 管理员密码
#配置 MySQL 的管理员初始密码:
#sudo mysqladmin -u root password ‘123456’
3.配置外网连接
第一步:
vi /etc/mysql/my.cnf
找到bind-address = 127.0.0.1
注释掉这行,如:#bind-address = 127.0.0.1
或者改为: bind-address = 0.0.0.0
重启MySQL
sudo /etc/init.d/mysql restart
第二步:
授权用户能进行远程连接
mysql -u root -p
输入root密码
use mysql
grant all privileges on *.* to root@"%" identified by "password" with grant option;
flush privileges;
第一行命令是使用mysql数据库。
第二行命令解释如下,*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码。
第三行命令是刷新权限信息,也即是让我们所作的设置马上生效。
如果以上设置后,还是从外网连接不到mysql那么就reboot。
测试远程连接命令:
mysql -h主机地址 -u用户名 -p用户密码
4.hive安装
1) 在mysql里创建hive用户,并赋予其足够权限
[root@node01 mysql]# mysql -u root -p
Enter password:
mysql> create user 'hive' identified by 'hive';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'hive' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
2)测试hive用户是否能正常连接mysql,并创建hive数据库
[root@node01 mysql]# mysql -u hive -p
Enter password:
mysql> create database hive;
Query OK, 1 row affected (0.00 sec)
mysql> use hive;
Database changed
mysql> show tables;
Empty set (0.00 sec)
3)解压缩hive安装包
tar -xzvf hive-0.13.1-bin.tar.gz
[hadoop@node01 ~]$ cd hive-0.13.1
[hadoop@node01 hive-0.13.1]$ ls
bin conf docs examples lib LICENSE NOTICE README.txt RELEASE_NOTES.txt scripts src
5.用mysql当原数据库,
找一个mysql的jdbcjar包mysql-connector-java-5.1.10-bin.jar也拷贝到hive-0.13.1/lib下
注意 mysql-connector-java-5.1.10-bin.jar
修改权限为777 (chmod 777 mysql-connector-java-5.1.10.jar)
6.修改hive配置文件
1)修改环境变量,把Hive加到PATH
/etc/profile
export HIVE_HOME=/home/hadoop/hive-0.13.1
export PATH=$PATH:$HIVE_HOME/bin
2)修改hive-env.sh
[hadoop@node01 conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@node01 conf]$ vi hive-env.sh
HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HIVE_CONF_DIR=/home/hadoop/hive-0.13.1/conf
3)拷贝hive-default.xml 并命名为 hive-site.xml
修改四个关键配置 为上面mysql的配置
[hadoop@node01 conf]$ cp hive-default.xml.template hive-site.xml
[hadoop@node01 conf]$ vi hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://ubuntu:3306/hive_db?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>19930403</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://ubuntu:8020/hive/warehouse</value>
</property>
对于上面注意
bin/hadoop fs -mkdir /hive/warehouse
#bin/hadoop fs -mkdir /hive/scratchdir
bin/hadoop fs -chmod g+w /hive/warehouse
#bin/hadoop fs -chmod g+w /hive/scratchdir
以下是hive-0.14要用的配置,我用的是hive-0.13.1所以没有配置。
<!-- hive-0.14 -->
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/iotmp/</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive/iotmp/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive/iotmp/</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
7.修改其他配置
1)修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HIVE_CONF_DIR=/home/hadoop/hive-0.13.1/conf
2)修改$HIVE_HOME/bin的hive-config.sh,增加以下三行
export JAVA_HOME=/usr/java/jdk1.7.0_71
export HIVE_HOME=/home/hadoop/hive-0.13.1
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
8.注意:启动hive前,先启动hadoop和mysql。