Hive只在一个节点上安装即可
安装前提是hadoop-2.6.3已正确安装配置并能正常启动
2.解压更名
[hadoop@master ~]# tar -zxf apache-hive-1.2.1-bin.tar.gz -C /home/hadoop/
[hadoop@master ~]# mv apache-hive-1.2.1-bin hive-1.2.1
3配置mysql
rpm -qa | grep mysql没有安装的话
yum -y install mysql-server
[root@master ~] service mysqld start
[root@master ~] mysql -uroot -p
Enter password:(回车即可)
mysql> insert into mysql.user(Host,User,Password) values("hadoop","hive",password("hive"));
create database hive;
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
grant all on hive.* to hive@'%' identified by 'hive';
grant all on hive.* to hive@'localhost' identified by 'hive';
grant all on hive.* to hive@'hadoop' identified by 'hive';
flush privileges;
myql -uhive -p(ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)
原因:such an anonymous user would "mask" any other user like '[any_username]'@'%' when connecting from localhost.
'hive'@'localhost' does match 'hive'@'%', but would match (e.g.) ''@'localhost' beforehands
解决办法:在表中删除mysql.user中删除hive和root之外的other user的记录,
4配置hive
1 mv hive-default.xml.template hive-site.xml
修改hive-site.xml(删除所有内容,只留一个<property></property>)
添加如下内容:
<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>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>
2 修改hive-env.sh
cp conf/hive-env.sh.template conf/hive-env.sh
export HIVE_HOME=/home/hadoop/hive-1.2.1/
export HIVE_CONF_DIR=/home/hadoop/hive-1.2.1/conf
3 修改hive-config.sh
vim ../bin/hive-config.sh
在最后一行添加以下内容
export HIVE_HOME=/home/hadoop/hive-1.2.1/
export JAVA_HOME=/usr/local/jdk1.8.0_91
export HADOOP_HOME=/home/hadoop/hadoop-2.6.3
6 下载驱动包(mysql-connector-java-5.1.22.tar.gz)
将jar包放在hive-1.2.1/lib/
7 先启动hadoop,mysql,再启动hive
错误1:(之前配置hive-site-xml,没有删掉原来的才会出现)
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException:
java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
解决办法:vi hive-1.2.1/conf/hive-site-xml 把原来的hive.exec.local.scratchdir hive.downloaded.resources.dir
${路径}改成绝对路径
/home/hadoop/hive-1.2.1/iotmp是新建的临时文件夹
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hadoop/hive-1.2.1/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hadoop/hive-1.2.1/iotmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
错误2:
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException:
Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因以及解决办法 :
元数据mysql 用户权限问题。 仔细检查mysql,解决了权限后问题解决。或者是javax.jdo.option.ConnectionURL没改
错误3:
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
原因:hadoop目录下存在老版本jline:
/hadoop-2.5.2/share/hadoop/yarn/lib:
-rw-r--r-- 1 root root 87325 Mar 10 18:10 jline-0.9.94.jar
解决办法:cp /hive/apache-hive-1.1.0-bin/lib/jline-2.12.jar /home/hadoop/hadoop-2.6.3/share/hadoop/yarn/lib/
每个hive版本都有其对应的配置安装方法