Hive安装配置,
安装环境配置
将文件apache-hive-1.2.1-bin.tar.gz通过XFTP工具上传到其node1
解压压缩包
tar -zxvf apache-hive-1.2.1-bin.tar.gz
将其移动到/usr下
mv apache-hive-1.2.1-bin /usr/
替换jline jar包
hadoop中yarn/lib下原有jline jar包版本:jline-0.9.94.jar
hive/lib下版本:jline-2.12.jar
把/usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar 替换为
/usr/apache-hive-1.2.1/lib/jline-2.12.jar
先把/usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar删除,再把hive目录下的包复制过来
rm -rf /usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar
cd /usr/apache-hive-1.2.1-bin/lib/
cp jline-2.12.jar /usr/hadoop/share/hadoop/yarn/lib/
查看是否拷贝成功
cd /usr/hadoop/share/hadoop/yarn/lib
通过ll命令查看
配置hive环境变量
vi /etc/profile
配置HIVE_HOME,并将HIVE_HOME/bin拼接到PATH后面
export HIVE_HOME=/usr/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin
使生效
source /etc/profile
配置hive的hadoop目录
进入配置文件目录cd /usr/apache-hive-1.2.1-bin/conf/
复制hive-env.sh.template 文件并重命名为hive-env.sh
cp hive-env.sh.template hive-env.sh
编辑vi hive-env.sh
找到#HADOOP_HOME一行,重新写一行配置HADOOP_HOME路径
HADOOP_HOME=/usr/hadoop-2.5.2 (注意自己hadoop目录名字)
hive部署
hive部署包括三种方式:本地derby、本地mysql、远端mysql
本地derby
hive本身内置了一个derby数据库
进入配置文件目录
cd /usr/apache-hive-1.2.1-bin/conf/
复制hive-default.xml.template文件并重命名为hive-site.xml
scp hive-default.xml.template hive-site.xml
编辑hive-site.xml文件
vi hive-site.xml
清空配置:将光标置于要删除的首行,输入:.,-1d 再回车,即删除原来所有配置(configuration之间的未被注释的就是配置)
再配置如下内容
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
这种方式元数据保存在hive_home/conf/ metastore_db文件夹中,即上面配置的数据库名称
启动hive,保证hadoop已正常启动,
如未启动请分别启动zkServer.sh start、 start-dfs.sh、start-yarn.sh、service mysqld start
再直接输入hive
可以看到进入hive的一个命令行模式
如果报以下错误
解决:
打开 HADOOP下面/usr/hadoop-2.5.2/etc/haoop下的
(因为在做MapReduce和HDFS的实验的时候引入过这个,可以暂时注释之前的)
添加 :export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:SOMGTHING ELSE
改好之后重启hadoop集群,再次运行即可;
输入show tables; 成功查询
show functions
本地mysql方式
首先需要在本地安装mysql数据库:
yum -y install mysql-server
启动mysql服务
service mysqld start
安装后root的默认密码为空,可以登陆后设置root的密码:mysql -uroot -p
默认密码为空,直接回车
重新设置root密码:use mysql 这里我们也设置为root
执行语句: update user set password=password(‘root’) where user=‘root’;
重新刷新权限表: flush privileges;
exit退出
重新登陆mysql –uroot -p,则需要输入root密码
再切换到mysql数据库:use mysql
查询user表:select user,host from user
将user字段的值为空的记录删除:delete from user where user=’’;
再将host为node1的改为%,表示允许从其他主机远程访问
update user set host=’%’ where host=‘node1’;
给root授予所有权限:
GRANT ALL PRIVILEGES ON . TO root@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’;
刷新权限:flush privileges;
exit退出再重新启动service mysqld restart
再配置hive-site.xml为本地mysql模式
删除hive-site.xml原来所有配置
再添加以下内容,#后面(包括#)为注释,实际配置时请删除
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.81.131:3306/hive?createDatabaseIfNotExist=true</value>
</property> #node1的IP+端口号+数据库名
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value> #mysql数据库用户名
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value> #mysql数据库密码
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value> #zookeeper节点
</property>
将mysql的驱动jar 包放到hive的lib目录/usr/apache-hive-1.2.1-bin/lib下
重新启动hive,同样进入hive命令行模式
输入exit;退出
我们再进入mysql命令行通过show databases;可以看到多了一个hive的数据库,即我们在hive-site.xml中配置的数据库