hadoop下Hive的嵌入模式和本地模式安装

406 阅读5分钟

版本情况:

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&amp;useSSL=false&amp;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
  1. 在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
  1. hive #启动hive 启动进入Hive的交互式执行环境以后,会出现如下命令提示符:
  2. hive>