数据仓库和Hive环境搭建

大数据 2023-07-05 17:29:38
51阅读

之前详细介绍了HDFS,原本想进到Mapreduce,但觉得Mapreduce基本上废料,因此直接进入了Hive中。

数据库管理

数据库管理,英文名字为Data Warehouse,可缩写为DW或DWH。数据库管理说白了,是一个非常大的数据储存结合,出自于公司的剖析性汇报和管理决策适用目地而建立,对多种多样的业务流程数据信息开展挑选与融合。

它为公司出示一定的BI(商务智能)工作能力,具体指导工作流程改善、监控時间、成本费、品质及其操纵。

数据库管理的键入方为各式各样的数据库,最后的輸出用以公司的数据统计分析、大数据挖掘、数据分析表等方位。

数据库查询和数据库管理差别

数据库查询是朝向买卖的解决系统软件,它是对于实际业务流程在数据库查询联网的日常实际操作,一般对纪录开展查看、改动。客户比较关注实际操作的响应速度、数据信息的安全系数、一致性和高并发适用的用户量等难题。

数据库管理一般对于一些主题风格的历史记录开展剖析,适用战略决策,又被称作联网剖析解决 OLAP(On-Line Analytical Processing)。

例如,支付宝钱包年度账单其实质是根据数据库管理开展大数据可视化而成。

数据库管理,是在数据库查询早已很多存有的状况下,为了更好地进一步发掘公共数据、为了更好地管理决策必须而造成的,它决不会是说白了的“大中型数据库查询”。

数据库管理分层次

依照数据信息注入排出的全过程,数据库管理构架可分成三层——源数据信息(ODS)、数据库管理(DW)、数据信息运用(APP)。

Hive

Hive是一个搭建在 Hadoop上的数据库管理架构。最开始,Hive是由Facebook开发设计,之后转交由 Apache!手机软件慈善基金会开发设计,并做为一个 Apache开源软件。

Hive是创建在 Hadoop上的数据库管理基本架构。它出示了一系列的专用工具,能够储存、查看和剖析储存在分布式系统系统软件中的规模性数据。Hive界定了简易的类SQL査询语言表达,根据最底层的测算模块,将SQL变为实际的测算每日任务开展实行。

Hive适用Mapreduce、Tez、Spark等分布式计算模块。

Hive自然环境构建

在Hive自然环境构建不用配备群集,Hive的安裝实际上有两一部分构成,一个是Server端、一个是手机客户端,说白了服务器端实际上便是Hive管理方法Meta的那一个Hive,服务器端能够装在一切连接点上,能够是Namenode上还可以是Datanode的随意一个连接点上。

Hive的手机客户端页面专用工具初期挑选SQuirrel SQL Client,但近期我很喜欢到了Apache Zeppelin,Apache Zeppelin是一款根据Web的NoteBook,实际上和Juypyter Notebook没什么两种。

在 Hive自然环境构建,必须构建Mysql,这儿挑选连接点node02开展Mysql自然环境构建。

 
  1. [hadoop@node02 ~]$ cd module/ 
  2. [hadoop@node02 module]$ mkdir mysql 
  3. [hadoop@node02 module]$ cd mysql/ 
  4. [hadoop@node02 mysql]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 
  5. [hadoop@node02 mysql]$ sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm 
  6. [hadoop@node02 yum.repos.d]$ yum install mysql-server 
  7.  
  8.  
  9.  
  10. [hadoop@node02 yum.repos.d]# #第一次登陆绕过管理权限验证 
  11. [hadoop@node02 yum.repos.d]# sudo vim /etc/my.cnf 
  12. ############ 
  13. [mysqld] 
  14. # 加上下边一行 
  15. skip-grant-tables 
  16. [hadoop@node02 yum.repos.d]# sudo systemctl start mysqld  
  17. [hadoop@node02 yum.repos.d]# mysql -u root 
  18. mysql> flush privileges
  19. Query OK, 0 rows affected (0.00 sec) 
  20. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';  
  21. Query OK, 0 rows affected (0.00 sec) 
  22. mysql> create database hive; 
  23. Query OK, 1 row affected (0.00 sec) 
  24. mysql> exit; 
  25. [hadoop@node02 yum.repos.d]# mysql -u root -p123456 
  26. mysql> use mysql; 
  27. # 设定远程桌面连接管理权限 
  28. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION
  29. Query OK, 0 rows affected, 1 warning (0.00 sec) 
  30. mysql> FLUSH PRIVILEGES
  31. Query OK, 0 rows affected (0.00 sec) 

下边逐渐在centos系统中安裝Hive。为了更好地兼具Hadoop3.1.4版本号,大家挑选安裝hive3.1.2版本号。Hive免费下载官方网:http://www.apache.org/dyn/closer.cgi/hive/

 
  1. [hadoop@node02 module]$ ls 
  2. apache-hive-3.1.2-bin.tar.gz  hadoop  mysql 
  3. [hadoop@node02 module]$ tar -zxvf apache-hive-3.1.2-bin.tar.gz  
  4. [hadoop@node02 module]$ mv apache-hive-3.1.2-bin hive 
  5. [hadoop@node02 module]$ ls 
  6. apache-hive-3.1.2-bin.tar.gz  hadoop  hive  mysql 
  7.  
  8. [hadoop@node02 conf]$ mv hive-env.sh.template hive-env.sh 
  9. [hadoop@node02 conf]$ vim hive-env.sh 
  10. ######### 
  11. export HADOOP_HOME=/home/hadoop/module/hadoop/hadoop-3.1.4 
  12. export HIVE_CONF_DIR=/home/hadoop/module/hive/conf 
  13. export HIVE_AUX_JARS_PATH=/home/hadoop/module/hive/lib 
  14.  
  15. [hadoop@node02 conf]$ sudo vim /etc/profile 
  16. ######### 
  17. export HIVE_HOME=/home/hadoop/module/hive 
  18. export PATH=$PATH:$HIVE_HOME/bin 
  19. export HIVE_CONF_DIR=$HIVE_HOME/conf 
  20. [hadoop@node02 conf]$ source /etc/profile 
  21. [hadoop@node02 conf]$  mv hive-default.xml.template hive-site.xml 
  22. [hadoop@node02 conf]$ vim hive-site.xml  
  23. ######### 
  24. <property> 
  25.  <!--  
  26.  相匹配的文件夹名称必须建立 
  27.  --> 
  28.     <name>hive.exec.local.scratchdir</name
  29.     <value>/home/hadoop/module/data/hive/jobs</value> 
  30. </property> 
  31. <property> 
  32.     <name>hive.downloaded.resources.dir</name
  33.     <value>/home/hadoop/module/data/hive/resources</value> 
  34. </property> 
  35. <property> 
  36.     <name>javax.jdo.option.ConnectionUserName</name
  37.     <value>root</value> 
  38. </property> 
  39. <property> 
  40.     <name>javax.jdo.option.ConnectionPassword</name
  41.     <value>123456</value> 
  42. </property> 
  43. <property> 
  44.     <name>javax.jdo.option.ConnectionURL</name
  45.     <value>jdbc:mysql://192.168.147.129:3306/hive?createDatabaseIfNotExsit=true</value> 
  46. </property> 
  47.  <!-- MySQL5.7应用com.mysql.jdbc.Driver 
  48.   
  49.  Mysql6版本号应用com.mysql.cj.jdbc.Driver 
  50.  --> 
  51. <property> 
  52.     <name>javax.jdo.option.ConnectionDriverName</name
  53.     <value>com.mysql.jdbc.Driver</value> 
  54. </property> 

 

为了更好地应用Java联接Mysql,必须免费下载Mysql驱动器,下载链接:https://maven.ityuan.com/maven2/mysql/mysql-connector-java/5.1.33。

免费下载进行后并放到lib文件夹中,并根据hive复位Mysql数据库查询。

 
  1. [hadoop@node02 lib]$ pwd 
  2. /home/hadoop/module/hive/lib 
  3. [hadoop@node02 lib]$ wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.33/mysql-connector-java-5.1.33.jar 
  4. [hadoop@node02 lib]$ schematool -dbType mysql -initSchema 

在Hive复位Mysql数据库查询,非常容易碰到2个较为普遍的Bug:

第一个Hive复位Mysql数据库查询:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

不正确缘故:系统软件找不着这一类所属的jar包或是jar包的版本号不一样系统软件不清楚应用哪一个。hive运行出错的缘故是后面一种

解决方案:

  1. com.google.common.base.Preconditions.checkArgument这一类所属的jar包为:guava.jar
  2. hadoop-3.2.1(途径:hadoop\share\hadoop\common\lib)中该jar包为 guava-27.0-jre.jar;而hive-3.1.2(途径:hive/lib)中该jar包为guava-19.0.1.jar
  3. 将jar包变为一致的版本号:删掉hive中低版jar包,将hadoop中高版本号的拷贝到hive的lib中。

第二个Hive复位Mysql数据库查询:Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8 at

出错缘故:在自身的hive-site.xml环境变量中,3215行(见报错纪录第二行)有特殊符号

解决方案:进到hive-site.xml文件,自动跳转到相匹配行,删掉里边的特殊符号就可以。

假如报Unknown database 'hive',提议立即在MySQL中建立hive数据库查询。

最后Hive取得成功复位Mysql数据库查询如下图所显示:

查询hive数据库查询,便会看到相匹配复位的表转化成。

在键入hive,就可以进到Hivecmd,表明Hive构建取得成功。

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。