自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)倉庫和Hive環(huán)境搭建

大數(shù)據(jù) 數(shù)據(jù)倉庫
數(shù)據(jù)倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數(shù)據(jù)倉庫顧名思義,是一個(gè)很大的數(shù)據(jù)存儲集合,出于企業(yè)的分析性報(bào)告和決策支持目的而創(chuàng)建,對多樣的業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選與整合。

[[393231]]

上次介紹了HDFS,本來想進(jìn)入Mapreduce,但感覺Mapreduce基本廢棄,于是直接進(jìn)入了Hive中來。

數(shù)據(jù)倉庫

數(shù)據(jù)倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數(shù)據(jù)倉庫顧名思義,是一個(gè)很大的數(shù)據(jù)存儲集合,出于企業(yè)的分析性報(bào)告和決策支持目的而創(chuàng)建,對多樣的業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選與整合。

它為企業(yè)提供一定的BI(商業(yè)智能)能力,指導(dǎo)業(yè)務(wù)流程改進(jìn)、監(jiān)視時(shí)間、成本、質(zhì)量以及控制。

數(shù)據(jù)倉庫的輸入方是各種各樣的數(shù)據(jù)源,最終的輸出用于企業(yè)的數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)報(bào)表等方向。

數(shù)據(jù)庫和數(shù)據(jù)倉庫區(qū)別

數(shù)據(jù)庫是面向交易的處理系統(tǒng),它是針對具體業(yè)務(wù)在數(shù)據(jù)庫聯(lián)機(jī)的日常操作,通常對記錄進(jìn)行查詢、修改。用戶較為關(guān)心操作的響應(yīng)時(shí)間、數(shù)據(jù)的安全性、完整性和并發(fā)支持的用戶數(shù)等問題。

數(shù)據(jù)倉庫一般針對某些主題的歷史數(shù)據(jù)進(jìn)行分析,支持管理決策,又被稱為聯(lián)機(jī)分析處理 OLAP(On-Line Analytical Processing)。

比如,支付寶年度賬單其本質(zhì)是基于數(shù)據(jù)倉庫進(jìn)行數(shù)據(jù)可視化而成。

數(shù)據(jù)倉庫,是在數(shù)據(jù)庫已經(jīng)大量存在的情況下,為了進(jìn)一步挖掘數(shù)據(jù)資源、為了決策需要而產(chǎn)生的,它決不是所謂的“大型數(shù)據(jù)庫”。

數(shù)據(jù)倉庫分層

按照數(shù)據(jù)流入流出的過程,數(shù)據(jù)倉庫架構(gòu)可分為三層——源數(shù)據(jù)(ODS)、數(shù)據(jù)倉庫(DW)、數(shù)據(jù)應(yīng)用(APP)。

Hive

Hive是一個(gè)構(gòu)建在 Hadoop上的數(shù)據(jù)倉庫框架。最初,Hive是由Facebook開發(fā),后來移交由 Apache!軟件基金會開發(fā),并作為一個(gè) Apache開源項(xiàng)目。

Hive是建立在 Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以存儲、查詢和分析存儲在分布式存儲系統(tǒng)中的大規(guī)模數(shù)據(jù)集。Hive定義了簡單的類SQL査詢語言,通過底層的計(jì)算引擎,將SQL轉(zhuǎn)為具體的計(jì)算任務(wù)進(jìn)行執(zhí)行。

Hive支持Mapreduce、Tez、Spark等分布式計(jì)算引擎。

Hive環(huán)境搭建

在Hive環(huán)境搭建無需配置集群,Hive的安裝其實(shí)有兩部分組成,一個(gè)是Server端、一個(gè)是客戶端,所謂服務(wù)端其實(shí)就是Hive管理Meta的那個(gè)Hive,服務(wù)端可以裝在任何節(jié)點(diǎn)上,可以是Namenode上也可以是Datanode的任意一個(gè)節(jié)點(diǎn)上。

Hive的客戶端界面工具早期選擇SQuirrel SQL Client,但最近我喜歡上了Apache Zeppelin,Apache Zeppelin是一款基于Web的NoteBook,其實(shí)和Juypyter Notebook沒有什么兩樣。

在 Hive環(huán)境搭建,需要搭建Mysql,這里選擇節(jié)點(diǎn)node02進(jìn)行Mysql環(huán)境搭建。

  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]# #第一次登錄跳過權(quán)限認(rèn)證 
  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. # 設(shè)置遠(yuǎn)程連接權(quán)限 
  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系統(tǒng)中安裝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.  對應(yīng)的文件夾需要?jiǎng)?chuàng)建 
  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驅(qū)動,下載地址:https://maven.ityuan.com/maven2/mysql/mysql-connector-java/5.1.33。

下載完成后并放在lib文件夾中,并通過hive初始化Mysql數(shù)據(jù)庫。

  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數(shù)據(jù)庫,容易遇到兩個(gè)比較常見的Bug:

第一個(gè)Hive初始化Mysql數(shù)據(jù)庫:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

錯(cuò)誤原因:系統(tǒng)找不到這個(gè)類所在的jar包或者jar包的版本不一樣系統(tǒng)不知道使用哪個(gè)。hive啟動報(bào)錯(cuò)的原因是后者

解決辦法:

  1. com.google.common.base.Preconditions.checkArgument這個(gè)類所在的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中高版本的復(fù)制到hive的lib中。

第二個(gè)Hive初始化Mysql數(shù)據(jù)庫:Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8 at

報(bào)錯(cuò)原因:在本身的hive-site.xml配置文件中,3215行(見報(bào)錯(cuò)記錄第二行)有特殊字符

解決辦法:進(jìn)入hive-site.xml文件,跳轉(zhuǎn)到對應(yīng)行,刪除里面的特殊字符即可。

如果報(bào)Unknown database 'hive',建議直接在MySQL中創(chuàng)建hive數(shù)據(jù)庫。

最終Hive成功初始化Mysql數(shù)據(jù)庫如下圖所示:

查看hive數(shù)據(jù)庫,就會看見對應(yīng)初始化的表生成。

在輸入hive,即可進(jìn)入Hive命令行,說明Hive搭建成功。

 

責(zé)任編輯:姜華 來源: Python之王
相關(guān)推薦

2021-04-18 18:43:25

數(shù)據(jù)倉庫數(shù)據(jù)數(shù)據(jù)庫

2022-06-20 09:08:00

數(shù)據(jù)體系搭建

2018-07-24 09:28:18

存儲數(shù)據(jù)倉庫

2017-11-24 13:51:40

數(shù)據(jù)倉庫數(shù)據(jù)庫數(shù)據(jù)分析

2018-03-15 08:50:46

Hive-數(shù)據(jù)存儲

2009-01-18 15:48:31

數(shù)據(jù)倉庫數(shù)據(jù)存儲OLTP

2016-12-21 12:46:47

數(shù)據(jù)倉庫SQLHive

2017-02-28 09:21:56

HadoopHive數(shù)據(jù)倉庫

2021-09-01 10:03:44

數(shù)據(jù)倉庫云數(shù)據(jù)倉庫數(shù)據(jù)庫

2023-12-01 14:55:32

數(shù)據(jù)網(wǎng)格數(shù)據(jù)湖

2025-03-25 10:49:24

2021-05-09 21:57:08

數(shù)據(jù)倉庫Olap

2020-09-17 14:32:18

數(shù)據(jù)倉庫HiveImpala

2021-04-16 10:21:50

數(shù)據(jù)庫數(shù)據(jù)湖數(shù)據(jù)

2013-03-20 16:23:53

數(shù)據(jù)清洗

2019-05-24 11:51:18

BI數(shù)據(jù)倉庫數(shù)據(jù)分析

2009-01-18 15:14:00

數(shù)據(jù)倉庫開發(fā)OLTP

2022-11-29 17:16:57

2020-01-03 09:40:13

大數(shù)據(jù)數(shù)據(jù)倉庫分層

2022-07-28 13:47:30

云計(jì)算數(shù)據(jù)倉庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號