Hive常用的安装分三种(注意:Hive会自动监测Hadoop的环境变量,如有就必须启动Hadoop)
先从本地上传Hive安装文件apache-hive-2.1.1-bin.tar.gz到/root/soft
使用hive自带默认元数据库derby来进行存储,通常用于测试
优点:使用简单,不用进行配置
缺点:只支持单Session。
安装步骤:
并配置环境变量
[root@hd01 local]tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
#修改Hive的安装路径名,方便以后使用
[root@hd01 local]mv apache-hive-2.1.1-bin/ hive
[root@hd01 local]vi /ect/profile
#添加以下内容
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH
#让profile生效
[root@hd01 local]source /etc/profile
如果不存在,就用hive.env.sh.template复制一个
export HIVE_CONF_DIR=/usr/local/hive/conf
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
Hive2.1.1中默认是没有使用hive-site.xml,可以把conf/hive-default.xml.template拷贝过来
[root@hd01 local]cp hive-default.xml.template hive-site.xml
在linux中新建上面两个目录,并且进行权限赋值
hdfs dfs -mkdir -p /user/hive /warehouse
hdfs dfs -mkdir -p /tmp/hive/
hdfs dfs -chmod 750 /user/hive/ warehouse
hdfs dfs -chmod 777 /tmp/hive
[root@hd01 hive] # mkdir iotmp
[root@hd01 hive] # chmod 777 iotmp
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/usr/local/hive/iotmp.
如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名
root
[root@hd01 hadoop]# start-dfs.sh
[root@hd01 hadoop]# start-yarn.sh
[root@hd01 hive]# schematool -initSchema -dbType derby
(注:启动之前要启动hdfs sbin/start-dfs.sh 和yarn sbin/start-yarn.sh )
必须在初始化的目录启动hive(默认只有一个当前的session可用)
[root@hd01 hive]# bin/hive
#进入后可以执行下面命令进行操作:
hive>show databases; #查看数据库
hive>show tables; #查看表
简单sql演示执行
# 创建表
hive> create table dog(id int,name string);
hive> select * from dog;
hive> insert into dog values(1,"gougou");
hive> desc dog; #查看表结构
hive> quit # 退出
(将元数据库放在该台机器上)(多用户模式)
通常使用关系型数据库来进行元数据存储(mysql、oracle等执行带jdbc驱动的数据库)
优点:支持多Session
缺点:需要配置、还需要安装mysql等关系型数据库
安装包准备
#查看mysql是否安装,如果安装了,卸载mysql
[root@hd01 hive] rpm -qa|grep mysql
#如果出现下面的提示,就说明系统已经 有了mysql,要卸载
mysql-libs-5.1.73-7.el6.x86_64
# 卸载mysql
[root@hd01 hive] rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
安装MySql服务器
1.先从本地上传服务端和客户端到服务器,尽量使用root用户操作)
2.通过命令进行安装:
将下面的解包,得到所有相关的包
[root@hd01 soft]# rpm -ivh mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
将相关包按照顺序依次安装
[root@hd01 soft]# rpm -ivh mysql-community-common-5.7.28- 1.el7.x86_64.rpm
[root@hd01 soft]# yum -y install perl
[root@hd01 soft]# yum -y install net-tools
[root@hd01 soft]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[root@hd01 soft]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[root@hd01 soft]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
# 3. 启动mysql服务
# 启动数据库
[root@hd01 soft]# systemctl start mysqld
# 设置开机自启数据库
[root@hd01 soft]# systemctl enable mysqld 20
# 4. 查看产生的随机密码,运行命令后最后显示的xuzmpubKv0(f即为密码
[root@hd01 soft]# grep 'password' /var/log/mysqld.log
2020-04-14T19:20:47.261622Z 1 [Note] A temporary password is generated for root@localhost: xuzmpubKv0(f
# 5. 用上述密码登录数据库
[root@hd01 soft]mysql -u root -p
# 6. 修改密码(root与@与localhost之间不能有空格)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123@';
步骤(下面三个步骤同嵌入式安装):
1.解压并配置环境变量
2.配置hive的配置文件
cp hive-env.sh.template hive-env.sh
vi hive-env.sh(可以配置jdk、hive的conf路径)
3.在Hive的conf配置hive的自定义配置文件
vi hive-site.xml:添加如下内容
注意:要把原来的默认的derby的连接配置,连接驱动,用户,密码改成mysql 的
添加以下内容
<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://localhost:3306/hive? createDatabaseIfNotExist=truevalue>
<description>JDBC connect string for a JDBC metastoredescription>
property>
<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
<description>Driver class name for a JDBC metastoredescription>
property>
<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
<description>username to use against metastore databasedescription>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>123123value>
<description>password to use against metastore databasedescription>
property>
4.将mysql的驱动包mysql-connector-java-5.1.27-bin.jar上传到上传到$HIVE_HOME/lib下(==
注意:驱动是jar结尾,不是tar结尾==)
5.执行执行先要初始化数据库
[root@hd01 hive]# bin/schematool -initSchema -dbType mysql
6.启动hive
[root@hd01 hive]# bin/hive
7.远程连接mysql服务器
可以先用windows平台的工具访问linux系统上的mysql服务器,如果提示不让远程登录,看下面的解决办法
常见错误分析:
1.不让远程登录的解决办法
首先注意:设置完成后,root的密码变成了mysql
不让远程登录:如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句 .:所有库下的所有表 %:任何IP地址或主机都可以连接)
输入命令说明:GRANT ALL PRIVILEGES ON . TO ‘用户名’@’%’ IDENTIFIED BY ‘你的密码 ’ WITH GRANT OPTION;
让客户端在远程登录拥有权限,密码重新设置成mysql
输入命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql'
WITH GRANT OPTION;
输入命令:FLUSH PRIVILEGES; 将命令写入授权表
让客户端在本地登录拥有权限,密码重新设置成mysql
输入命令:grant all privileges on *.* to root@"localhost" identified by "mysql" with grant option;
输入命令:FLUSH PRIVILEGES;
2.执行mysql -uroot -p
或者
第一次安装完mysql后 执行/usr/bin/mysql_secure_installation 脚本,出现 Enter current password for root (enter for none): 点击回车后出现下面的错误
mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
错误原因:/var/lib/mysql目录中socket文件不存在。
连接mysql服务器有两种方式:tcp连接,通过socket文件连接。通过socket文件,启动
mysql服务,mysql服务会自动生成一个sock文件,生成的sock文件默认放在 -- datadir=/var/lib/mysql,mysql默认从/var/lib/mysql目录读取sock文件。
解决办法:
1、看看/var/lib/mysql/mysql 有没有mysql.sock文件
2、没有mysql.sock,重启mysql服务,看看有没有。
3、没有的话,ps aux|grep mysql|grep -v 'grep' 查看mysql服务生成的sock在哪个目录,看看这个目录有没有。
4、如果mysql服务生成在其他目录,解决办法有:
方法一 修改mysql服务生成的目录,在/etc/my.cnf 中[mysqld] socket
首先确认在etc/下有没有my.cnf文件
如果是rpm安装的mysql,默认这里没有.需要将usr/share/mysql下的my-medium.cnf拷贝到/etc/下并改名成my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
方法二 mysql从/var/lib/mysql/读取sock文件,建立一个软连接,或者copy过来
方法三 还可以找到当前的mysql进程,将他删掉,重新启动
情况:第一次启动失败,进程没有关闭,第二次开服务无法启动
(将元数据库放在其他机器上)(多用户模式)
和本地模式差不多,只是将元数据放在别的服务器上,这种的就是咱们常说的集群模式。 可以有一个hive的server和多个hive的client。