版本情况:
apache-hive-1.2.1-bin.tar mysql-connector-java-5.1.40.tar ubuntu 16.04 相关软件网盘链接 链接:pan.baidu.com/s/15z2WOY_L… 提取码:0830 --来自百度网盘超级会员V1的分享
一、Hive的嵌入模式安装
默认Hive利用内置的derby数据库进行元数据存储,但derby仅支持单例访问,无法满足实际应用需求。 不需要MySQL的支持,使用Hive的自带的数据库Derby 局限:只支持一个连接
解压安装包
sudo tar -zxvf apache-hive-2.3.6-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local
sudo mv apache-hive-2.3.6-bin hive # 将文件夹名改为hive
sudo chown -R root:root hive # 修改文件权限
注意,上面的root:root是用户组和用户名,即当前操作Linux系统的用户名,请根据自己使用的用户名修改。
1)为了方便使用,我们把hive命令加入到环境变量中去,请使用vim编辑器打开/etc/profile文件,命令如下:
1. sudo vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/app/hadoop2.7 //之前如果已经配置了HADOOP_HOME,这里就不用再配置了
HADOOP_HOME需要被配置成你机器上Hadoop的安装路径,比如这里是安装在/app/hadoop-2.7目录 保存退出后,运行如下命令使配置立即生效:
source /etc/profile
初始化Derby数据库
Hive2.1版本以后,默认不初始化内置的Derby数据库作为元数据,需要手动初始化,初始化的命令如下: schematool -dbType derby -initSchema
启动hive 1)hive的数据存储在hdfs上的,必须先启动hadoop
start-dfs.sh
start-yarn.sh
2)在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写 创建目录:
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
修改权限:
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
3)启动hive
hive
进入hive shell,输入下面命令:
hive> show databases;
OK
default
Time taken: 4.449 seconds, Fetched: 1 row(s)
安装成功
原因分析:
提示:这里填写问题的分析:
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
二、Hive的本地模式安装
解压安装包
sudo tar -zxvf apache-hive-2.3.6-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local
sudo mv apache-hive-2.3.6-bin hive # 将文件夹名改为hive
sudo chown -R root:root hive # 修改文件权限
注意,上面的root:root是用户组和用户名,即当前操作Linux系统的用户名,请根据自己使用的用户名修改。
1)为了方便使用,我们把hive命令加入到环境变量中去,请使用vim编辑器打开/etc/profile文件,命令如下:
1. sudo vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/app/hadoop2.7 //之前如果已经配置了HADOOP_HOME,这里就不用再配置了
HADOOP_HOME需要被配置成你机器上Hadoop的安装路径,比如这里是安装在/app/hadoop-2.7目录 保存退出后,运行如下命令使配置立即生效:
source /etc/profile
2)修改hive-env.sh,添加环境变量
cd /usr/local/hive/conf
sudo cp hive-env.sh.template hive-env.sh
sudo vim hive-env.sh
添加内容
export HADOOP_HOME=/app/hadoop-2.7
export HIVE_CONF_DIR=/usr/local/hive/conf
应用一下
source hive-env.sh 3. 修改/usr/local/hive/conf下的hive-site.xml
cd /usr/local/hive/conf sudo mv hive-default.xml.template hive-site.xml 在hive-site.xml中添加如下配置信息:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=GMT</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>
</configuration>
4、配置Hive的log4j 避免系统警告。 #重命名文件
cp hive-log4j.properties.template hive-log4j.properties
sudo nano hive-log4j.properties
注释掉下面语句: #log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter 添加下面语句: log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter 5、安装并配置Mysql(要创建hive用户) 这里我们采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。 安装mysql
sudo apt-get install mysql-server
会出现一个界面要求我们设置mysql密码 将我们的Mysql JDBC驱动程序 安装到ubuntu下 进行解压
cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz
cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
3、启动并登录Mysql shell
service mysql start #启动MySQL服务
mysql -u root -p #登录MySQL数据库
输入我们刚设置的密码 4、配置Mysql允许Hive(用户)远程接入 ① 创建远程连接用户 在下面的指令中填入自己想添加的用户名密码。
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive' WITH GRANT OPTION;
创建用户名为hive 密码为hive ② 生效
flush privileges;#刷新mysql系统权限关系表
③ 查询用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
返回了数据库的所有用户,看到自己添加的用户表示添加成功了
④ 退出mysql
输入exit命令退出数据库
⑤ 修改配置文件
修改mysql的配置文件
指令:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉这一行
⑥ 重启数据库
指令: sudo /etc/init.d/mysql restart (或service mysql restart)
⑦ 连接
在主机名或IP地址里填上ubuntu的ip地址,在用户名,密码里填上刚才创建的用户密码,就可以连接了
5、在Mysql中为Hive建立元数据库
用新建立的用户hive登录mysql,建立hive数据库用于存储元数据。
Shell 命令
service mysql start #启动MySQL服务
mysql -u hive -p #登录MySQL数据库
create database hive;
创建名为hive的数据表 #这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据
show databases;
exit;
6、初始化元数据 有时启动hive会出错hive metastore database is not initialized的错误,是因为hive或mysql版本不一致导致的,可以用下面的命令升级hive的架构来解决。
cd /usr/local/hive
schematool -dbType mysql -initSchema
初始化成功后,在mysql数据库中的hive数据库如下:
如果多次初始化会提示以下错误,表示MySQL中名称为Hive数据库已存在,删除名为hive数据库即可。
7、启动Hive
提高当前用户对根目录的操作权限
cd /
sudo chmod 777 .
启动hive之前,请先启动hadoop集群。
start-dfs.sh
Start-yarn.sh
- 在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写 创建目录:
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
修改权限:
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
- hive #启动hive 启动进入Hive的交互式执行环境以后,会出现如下命令提示符:
- hive>