Hive搭建(认识Hive),
Hive环境搭建:
注意事项;
因为是Hive,他是基于Hadoop之上,所以我们在Hive基本的环境搭建中,
需要配置一台Hadoop伪分布式。。
1):安装
解压安装(需要多次安装)
tar -zxvf ./apache-hive-0.13.1-bin.tar.gz -C /opt/install/
1.1)、yum命令安装(一次性安装即可)
#yum install mysql mysql-devel mysql-server
2):修改名Hive原名
安装完毕,修改名字
mv ./apache-hive-0.13.1-bin/ hive-0.13.1
3):jdk
需要jdk1.7版本,不能高不能低。
4):配置
因为Hive是基于Hadoop上面,所以需要配置。
4.1): 打开hive安装目录,找到conf。
4.2): 把hive-env.sh.template 修改成 hive-env.sh
4.2.0):JAVA_HOME=/opt/install/jdk1.7.0_67 //如果不配置这个,那么就运行不成jar包
4.2.1):# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/opt/install/hadoop-2.5.0
把安装hadoop的地址复制到home,因为Hive是基于hadoop的,所以首先要知道hadoop的安装地址
4.2.2):# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/install/hive-0.13.1/conf
hive参数配置地址
5):创建系统文件:
5.1):创建系统文件。
创建hdfs文件,tmp与user/hive/warehouse
因为hive创建表的数据,都是储存到hdfs上面。
可以先hfds dfs -ls / 查看所有信息,是否存在tmp与hove这样的文件。
hdfs dfs -mkdir -p user/hive/warehouse
hdfs dfs -mkdir /tmp
5.2): 赋权限
a. 创建hive目录
[jerry@java08 hadoop-2.5.0-cdh5.3.6]$ ./bin/hdfs dfs -mkdir /tmp
[jerry@java08 hadoop-2.5.0-cdh5.3.6]$ ./bin/hdfs dfs -mkdir -p /user/hive/wareshouse
b. 修改目录权限
[jerry@java08 hadoop-2.5.0-cdh5.3.6]$ ./bin/hdfs dfs -chmod 775 /tmp
[jerry@java08 hadoop-2.5.0-cdh5.3.6]$ ./bin/hdfs dfs -chmod 775 /user/hive/wareshouse
5.3):打开:
在hive根目录命令:
$ bin/hive
第一次打开hive会很慢,因为他需要创建一些准备的工作,比如元数据信息这些信息。
到了hive> 这个界面就是CLI
如果遇见了问题,在操作数据库的时候,出现了问题,那么就查找你的tmp和hive文件
权限是否给足!因为当前使用用户组的来操作所在数据表的目录!
所有注意事项:
1):配置derby数据库:
当没有配置元数据的时候,他的数据全部储存到内存数据库汇总中,所以,只能拥有一个主机访问当前的CLI,如果
超过一台访问,那么就会报错! 默认存储在自带的default数据库中,推介使用采用MySQL储存Metastore,
所以我们要安装MySql~
yum安装数据库:
4.1、yum命令安装
#yum install mysql mysql-devel mysql-server
4.2、启动服务
#service mysqld start
4.3、开机启动(启动mysql)
#chkconfig mysqld on
4.4、创建root管理员密码
#mysqladmin -uroot password ‘123456’
4.5、给用户和机器授权:
#mysql -uroot –p123456
mysql> grant all privileges on *.* to 'root'@'192.168.23.66' identified by 'root' with grant option;
grant all privileges on *.* to 'root'@'*' identified by 'tonglianhuiV' with grant option;
-- tonglianhuiV是密码
>> 这段指令表示'192.168.71.88'的主机可以登陆该mysql server
** 授权所有的数据库和所有的表
grant all on *.* (第一个*是所有的数据库,第二个*是所有的表)
** 授权给你指定的用户和机器
to 'root'@'beat' identified by 'root' with grant option;
4.6、刷新缓存
mysql> flush privileges;
包安装数据库:
1):检查是否系统自带安装Mysql
[root@datanode1 hadoop]# rpm -qa | grep mysql 检查有没有Mysql安装包
[root@datanode1 hadoop]# rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64 删除自带的安装包
2):安装Mysql数据库(可能需要root用户)
2.1):首先安装service数据库(需要安装client方能链接):
[root@datanode1 package]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
2.2):安装成功会出现这样的提示!
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
—— 提示密码在root/.mysql_secret
[root@datanode1 package]# cat /root/.mysql_secret
—— 查看密码
2.3):启动Mysql服务
[root@datanode1 package]# service mysql start
[root@datanode1 package]# service mysql status
2.4):安装client数据库:
[root@datanode1 package]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
2.4.1): 从client连接service数据库:
mysql -uroot -pDPxXjTsSoGmoNkK5
如果没有权限,那么就需要回到Root用户的~目录下去设置
2.5):修改密码与登陆权限信息:
需要回到Root的~目录下才能登陆
[root@datanode1 ~]# mysql -uroot -pDPxXjTsSoGmoNkK5
mysql> SET PASSWORD=PASSWORD('123456');
# mysqladmin -uroot password '123456'
2.5.1):修改登陆Myql的权限
* mysql> show databases; 查到Mysql数据库
* mysql> use mysql; 选择Mysql数据库
* mysql> show tables; 查看所有表
select user,host,password from user;
查询这个表的user,host与密码的信息
之所以连接不上,是因为user这个表里的host(主机)没有这
样的信息,所以,需要改写这个信息。
2.5.2):修改user用户的主机登陆的信息
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | datanode1 | *F5B0128BB67C5B0B7B9DD5C3674A44C384202B9F |
| root | 127.0.0.1 | *F5B0128BB67C5B0B7B9DD5C3674A44C384202B9F |
| root | ::1 | *F5B0128BB67C5B0B7B9DD5C3674A44C384202B9F |
+------+-----------+-------------------------------------------+
* update user set Host='%' where user='root' and Host='localhost';
* delete from user where user='root' and Host='datanode1';
* delete from user where user='root' and Host='127.0.0.1';
* delete from user where user='root' and Host='::1';
2.5.3、刷新缓存
mysql> flush privileges;;
配置Metastore(元数据)-Yum与包安装配置
1):配置元数据文本
1.1):需要创建一个xml文件:
[hadoop@datanode1 conf]$ touch hive-site.xml
因为在Windows第一次来执行,就是Windows的
字符编码,那么的话,Linux那边肯定有问题,
所以第一次必须在Linux系统打开
1.1.1):我们在hive-defalut.xml.tmplate(次文本仅参考)需要找一些头的信息放在里面:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
</configuration>
1.2):打开hive-defalut.xml.tmplate这个文件是非常的详细我们可以通过文本查看到三处警告:
* This file is provided for documentation purposes ONLY
这个文件只是提供文档的目的
+
* Any changes you make to this file will be ignored by Hive.
您所作的改变通过蜂巢这个文件将被忽略。
也就是说,在本文本改变的信息,全部被忽略
* You must make your changes in hive-site.xml instead
你必须让你的hive-site的变化。xml而不是
改变的值必须去这个hive-site.xml文件去做,所以我们需要创建这样的文件
1.2.1):我们需要在参考hive-defalut.xml.tmplate文本信息:
分别是:
* javax.jdo.option.ConnectionURL URL配置
* javax.jdo.option.ConnectionDriverName 驱动配置
* javax.jdo.PersistenceManagerFactoryClass 用户名配置
* javax.jdo.option.DetachAllOnCommit 密码配置
我们需要拷贝这4条配置信息到hive-site.xml
1.3):拷贝数据库驱动包[jar文件]到Hive的lib目录
[root@java08 ~]# mv /opt/software/mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-0. 3.1-cdh5.3.6/lib/
注意(ysql-connector-java-5.1.27.tar.gz):
需要吧这个驱动放在hive的lib目录里面,否者会导致mysql找不到jdbc包,连接不上去
2):配置的元数据信息:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<!-- Url-->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://datanode1:3306/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!-- metastore?createDatabaseIfNotExist=true 如果不存在,就自动创建一个元数据 -->
<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>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
在使用中,我们操作HIVE的时候,需要显示当前数据库和一些信息,为了方便查看,需要修改。
<property>
<!-- 操作hive时,显示信息-->
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<!-- 操作hive时,显示信息-->
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
设置表储存文件地址:
<property>
<!--设置储存位置-->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。