数据仓库Hive安装部署及基本操作
Hive是基于Hadoop的⼀个数据仓库⼯具,可以将结构化的数据⽂件映射为⼀张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进⾏运⾏。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应⽤,⼗分适合数据仓库的统计分析。
Hive构建在基于静态批处理的Hadoop之上,由于Hadoop通常都有较⾼的延迟并且在作业提交和调度的时候需要⼤量的开销。因此,Hive 并不适合那些需要低延迟的应⽤,它最适合应⽤在基于⼤量不可变数据的批处理作业,例如,⽹络⽇志分析。
Hive的特点是:可伸缩(在Hadoop集上动态的添加设备)、可扩展、容错、输出格式的松散耦合。
Hive将元数据存储在关系型数据库(RDBMS)中,⽐如MySQL、Derby中。
Hive有三种模式连接到数据,其⽅式是:单⽤户模式,多⽤户模式和远程服务模式。(也就是内嵌模式、本地模式、远程模式)。
现在来安装Hive:
step 1:⾸先在Linux本地,新建/data/hive⽬录,⽤于存放所需⽂件。切换⽬录到/data/hive下,使⽤wget命令,下载hive所需安装包apache-hive-2.3.以及mysql-connector-java-5.1.47-bin.jar。(hive下载会很慢,建议使⽤外部主机下载好上传到linux,最好是选择Stable版本的,不然后续使⽤有可能会出现很多问题)
mkdir -p /data/hive
cd /data/hive
wget /dist/hive/stable/apache-hive-2.3.
wget sql/get/Downloads/Connector-J/mysql-connector-java-5.1.
将/data/hive⽬录下的apache-hive-2.3.,解压缩到/apps⽬录下,再切换到/apps⽬录下,将apache-hive-2.3.4,重命名为hive。使⽤vim打开⽤户环境变量。将Hive的bin⽬录,添加到⽤户环境变量PATH中,然后保存退出。执⾏source命令,使Hive环境变量⽣效。
tar -zxvf apache-hive-2.3. -C /apps/
cd /apps/
mv /apps/apache-hive-2.3.4-bin/ /apps/hive
sudo vim ~/.bashrc
#hive config
export HIVE_HOME=/apps/hive
export PATH=$HIVE_HOME/bin:$PATH
source ~/.bashrc
由于Hive需要将元数据,存储到Mysql中。所以需要拷贝/data/hive⽬录下的mysql-connector-java-5.1.47-bin.jar到hive的lib⽬录下。cp /data/hive/mysql-connector-java-5.1.47-bin.jar /apps/hive/lib/
step 2:配置hive
切换到/apps/hive/conf⽬录下,并创建Hive的配置⽂件l,使⽤vim打开l⽂件,并将下列配置项,添加到l⽂件中。(设置javax.jdo.option.ConnectionURL时,最好在value值加⼊SSL的设置,否则⾼版本的hive后续会报SSL的警告:1.设置useSSL=false;2.设置useSSL = true并为服务器证书验证提供信任库)
cd /apps/hive/conf
l
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExsit=true;characterEncoding=latin1&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value&sql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>nothing</value>
mysql的jar包下载</property>
</configuration>
由于Hive的元数据会存储在Mysql数据库中,所以需要在Hive的配置⽂件中,指定mysql的相关信息。
javax.jdo.option.ConnectionURL:数据库链接字符串。
javax.jdo.option.ConnectionDriverName:连接数据库的驱动包。
javax.jdo.option.ConnectionUserName:数据库⽤户名。
javax.jdo.option.ConnectionPassword:连接数据库的密码。
此处的数据库的⽤户名及密码,需要设置为⾃⾝系统的数据库⽤户名及密码。
另外,还需要告诉Hive,Hadoop的环境配置。所以我们需要修改hive-env.sh⽂件。先将plate重命名为hive-env.sh,使⽤vim打开hive-env.sh⽂件,追加Hadoop的路径,以及Hive配置⽂件的路径到⽂件中。
mv /apps/hive/conf/plate /apps/hive/conf/hive-env.sh
vim hive-env.sh
# Set HADOOP_HOME to point to a specific hadoop install directory
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/apps/hadoop
# Hive Configuration Directory can be controlled by:
# export HIVE_CONF_DIR=
export HIVE_CONF_DIR=/apps/hive/conf
step 3:配置Mysql,⽤于存储Hive的元数据
⾸先,需要保证Mysql已经启动。执⾏以下命令,查看Mysql的运⾏状态。通过输出,若Mysql未启动。所以需要执⾏启动命令。
sudo service mysql status
sudo service mysql start
//如果未安装Mysql则需要执⾏安装命令。若我们的环境已安装Mysql,则⽆需执⾏此步。
sudo apt-get install mysql-server
//这种⽅法默认安装5.7,如果你的Ubuntu是18版本,建议:
wget sql//mysql-apt-config_0.8.10-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
sudo apt undate
sudo apt install mysql-server
//注意:MySQL5.7版本最⾼只适配到Ubuntu17.04
开启Mysql数据库,此时会提⽰输⼊密码
mysql -u root -p
创建名为hive的数据库,编码格式为latin1,⽤于存储元数据。
create database hive CHARACTER SET latin1;
//查看数据库是否创建成功
show databases;
/
/退出
exit
step 4:执⾏测试
由于Hive对数据的处理,依赖MapReduce计算模型,所以需要保证Hadoop相关进程已经启动。输⼊jps,查看进程状态。若Hadoop相关进程未启动,则需启动Hadoop。
/apps/hadoop/sbin/start-all.sh
启动Hadoop后,在终端命令⾏界⾯,直接输⼊hive便可启动Hive命令⾏模式。输⼊HQL语句查询数据库,测试Hive是否可以正常使⽤。
hive
show databases;
1. 启动mysql数据库后,进⼊数据库,输⼊密码,提⽰:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
解决⽅法:以管理员⾝份进⼊:sudo mysql -u root -p。(默认的MySQL安装之后根⽤户是没有密码的,命令执⾏后会让你设置root的密码,进⼊root后才能进⾏其他设置)
2. 在启动hive时Unable to instantiate org.apache.hadoop.adata.SessionHiveMetaStoreClient
可能的原因:
mysql的jar没有拷贝到hive/lib⽬录下
hive的版本过⾼导致的问题,所以其他伙伴有类似错误请考虑版本
需要hive元数据库初始化,执⾏ schematool -dbType mysql -initSchema
HIVE_HOME/lib 下的derby-10.11.1.1.jar问题,把derby-10.11.1.1.jar 换成derby-10.10.2.0.jar问题成功解决
3. 完全卸载mysql5.7并安装8.0
//开始卸载
sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-common
//清除数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
清除数据的过程中会弹出⼏个窗⼝,讯问你是否需要清除⽤户数据,要选择yes! 接下来更新软件源库:
sudo apt-get update
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
然后会弹出以下窗⼝,确认⼀下第⼀项MySQL Server & Cluster后⾯的版本是不是8.0版本,如果不是,将光标移动到此处,enter键修改成8.0。没问题后选OK。
再次更新软件库,然后安装mysql服务器:
sudo apt-get update
sudo apt-get install mysql-server
此时就会安装mysql8.0。安装过程中,如果⽹速不好会中断,需要重复执⾏安装命令。下载完成后,会弹出设置root⽤户的密码和选择加密⽅式的窗⼝:输⼊密码后会让再次输⼊确认密码,选择加密⽅式的时候,选择第⼆项。虽然第⼀项是8.0版本的推荐⽅式,但是貌似Ubuntu18.04还不⽀持,所以继续使⽤以前的加密⽅式⽐较好。
安装完成后测试登录:
mysql -u root -p
输⼊密码后,如果登录成功,则成功安装。
4. 启动hive时报错:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论