Hadoop HIVE

?

??

數據倉庫工具。構建在hadoop上的數據倉庫框架,可以把hadoop下的原始結構化數據變成Hive中的表。(主要解決ad-hoc query,即時查詢的問題)

支持一種與SQL幾乎完全相同的語言HQL。除了不支持更新,索引和事務,幾乎SQL其他的特性都支持。

可以看成是SQL到Map-reduce的映射器

提供shell,JDBC/ODBC,Thrift,Web等接口

?

HIVE組件與體系結構

用戶接口:shell,thrift,web

Thrift 服務器

元數據庫 (Derby是hive內嵌db 用于本地模式,一般都用mysql,所謂metadata,因為Hive本身不存儲數據,完全依賴于HDFS和MapReduce,Hive可以將結構化的數據文件映射為一張數據庫表,Hive中表純邏輯,這些有關邏輯的表的定義數據就是元數據)

HIVE QL(compiler,optimizer,executor)

Hadoop?

?

?

?

?

HIVE數據放在哪里?

在hdfs下的warehouse下面,一個表對應一個子目錄

桶與reducer

本地的/tmp目錄存放日志和執行計劃

?

HIVE安裝:

內嵌模式:元數據保持在內嵌的Derby,只允許一個會話連接(hive服務和metastore服務運行在同一個進程中,derby服務也運行在該進程中)

本地獨立模式:hive服務和metastore服務運行在同一個進程中,mysql是單獨的進程,可以在同一臺機器上,也可以在遠程機器上。
該模式只需將hive-site.xml中的ConnectionURL指向mysql,并配置好驅動名、數據庫連接賬號即可

遠程模式:hive服務和metastore在不同的進程內,可能是不同的機器。
該模式需要將hive.metastore.local設置為false,并將hive.metastore.uris設置為metastore服務器URI,如有多個metastore服務器,URI之間用逗號分隔。metastore服務器URI的格式為thrift://host port
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
</property>

?

Hive2.1.1:

(1)內嵌模式

cp apache-hive-2.1.1-bin.tar.gz /home/hdp/
cd /home/hdp/
tar -zxvf apache-hive-2.1.1-bin.tar.gz

root修改/etc/profile

export HIVE_HOME=/home/hdp/hive211
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib:$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=/home/hdp/hive211/lib

切換hdp修改/home/hdp/hive211/conf 下的

hive-env.sh

cp hive-env.sh.template hive-env.sh
vi hive-env.shHADOOP_HOME=/home/hdp/hadoop
export HIVE_CONF_DIR=/home/hdp/hive211/conf

hive-site.xml

cp hive-default.xml.template hive-site.xml
vi hive-site.xml 

?

#該參數指定了 Hive 的數據存儲目錄,默認位置在 HDFS 上面的 /user/hive/warehouse 路#徑下<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description></property>#該參數指定了 Hive 的數據臨時文件目錄,默認位置為 HDFS 上面的 /tmp/hive 路徑下<property><name>hive.exec.scratchdir</name><value>/tmp/hive</value><description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description></property><property>
<name>hive.querylog.location</name>
<value>/home/hdp/hive211/iotmp</value>
<description>Location of Hive run time structured log file</description>
</property><property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hdp/hive211/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property><property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hdp/hive211/iotmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property><property><name>hive.server2.logging.operation.log.location</name><value>/home/hdp/hive211/iotmp/operation_logs</value><description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:derby:;databaseName=metastore_db;create=true</value><description>JDBC connect string for a JDBC metastore.To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.</description>
</property><property><name>javax.jdo.option.ConnectionDriverName</name><value>org.apache.derby.jdbc.EmbeddedDriver</value><description>Driver class name for a JDBC metastore</description>
</property><property><name>javax.jdo.option.ConnectionUserName</name><value>APP</value><description>Username to use against metastore database</description>
</property><property><name>javax.jdo.option.ConnectionPassword</name><value>mine</value><description>password to use against metastore database</description>
</property><property><name>hive.exec.reducers.bytes.per.reducer</name><value>256000000</value><description>size per reducer.The default is 256Mb, i.e if the input size is 1G, it will use 4 reducers.</description>
</property><property><name>hive.exec.reducers.max</name><value>1009</value><description>max number of reducers will be used. If the one specified in the configuration parameter mapred.reduce.tasks isnegative, Hive will use this one as the max number of reducers when automatically determine number of reducers.</description>
</property>

?

根據上面的參數創造必要的文件夾

[hdp@hdp265m conf]$ hadoop fs -mkdir -p /user/hive/warehouse
[hdp@hdp265m conf]$ hadoop fs -mkdir -p /tmp/hive
[hdp@hdp265m conf]$ hadoop fs -chmod 777 /tmp/hive
[hdp@hdp265m conf]$ hadoop fs -chmod 777 /user/hive/warehouse
[hdp@hdp265m conf]$ hadoop fs ls /
[hdp@hdp265m hive211]$ pwd
/home/hdp/hive211
[hdp@hdp265m hive211]$ mkdir iotmp
[hdp@hdp265m hive211]$ chmod 777 iotmp

把hive-site.xml?中所有包含?${system:java.io.tmpdir}替換成/home/hdp/hive211/iotmp

用vi打開編輯全局替換命令 先按Esc鍵 ?再同時按shift加: 把以下替換命令粘貼按回車即可全局替換

%s#${system:java.io.tmpdir}#/home/hdp/hive211/iotmp#g

運行hive

./bin/hive

hive <parameters> --service serviceName <serviceparameters>啟動特定的服務

[hadoop@hadoop~]$ hive --service  help  
Usage ./hive<parameters> --service serviceName <service parameters>  
Service List: beelinecli help hiveserver2 hiveserver hwi jar lineage metastore metatool orcfiledumprcfilecat schemaTool version  
Parametersparsed:  --auxpath : Auxillary jars  --config : Hive configuration directory  --service : Starts specificservice/component. cli is default  
Parameters used:  HADOOP_HOME or HADOOP_PREFIX : Hadoop installdirectory  HIVE_OPT : Hive options  
For help on aparticular service:  ./hive --service serviceName --help  
Debug help:  ./hive --debug --help  

?

?

?
報錯

解決辦法:./bin/schematool -initSchema -dbType derby

報錯

解決方法:刪除

/home/hdp/hive211/metastore_db

目錄下 rm -rf metastore_db/ 在初始化:./bin/schematool -initSchema -dbType derby
重新運行

./bin/hive

Logging initialized using configuration in jar:file:/home/hdp/hive211/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. tez, spark) or using Hive 1.X releases.
hive> 

?

HIVE遠程模式

在hdp265dnsnfs上安裝mysql

編譯hive-site.html

?

<configuration>  <property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://192.168.56.108:3306/hive?createDatabaseIfNotExist=true</value>  </property>  <property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>com.mysql.jdbc.Driver</value>  </property>  <property>  <name>javax.jdo.option.ConnectionUserName</name>  <value>root</value>  </property>  <property>  <name>javax.jdo.option.ConnectionPassword</name>  <value>111111</value>  </property>  <property>    <name>hive.metastore.schema.verification</name>    <value>false</value>    <description>    Enforce metastore schema version consistency.    True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic    schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures    proper metastore schema migration. (Default)    False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.    </description>    </property>   
</configuration> 

報錯:Caused by: MetaException(message:Version information not found in metastore. )

解決:hive-site.xml加入

<name>hive.metastore.schema.verification</name>    <value>false</value>  

報錯:缺少mysql jar包

解決:將其(如mysql-connector-java-5.1.42-bin.jar)拷貝到$HIVE_HOME/lib下即可

報錯:

Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized.   Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed,   don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)  

解決:

#數據庫的初始化。  bin/schematool -initSchema -dbType mysql  

啟動:

bin/hive

啟動后mysql 多了hive 數據庫

?

?

測試

?

創建數據庫

create database db_hive_test;

創建測試表

?

use db_hive_test;

create table student(id int,name string) row format delimited fields terminated by '\t';



?

加載數據到表中

?

新建student.txt 文件寫入數據(id,name 按tab鍵分隔)

vi student.txt

?

[html]?view plaincopy
在CODE上查看代碼片派生到我的代碼片
  1. 1001????zhangsan??
  2. 1002????lisi??
  3. 1003????wangwu??
  4. 1004????zhaoli??

load data local inpath '/home/hadoop/student.txt' into table? db_hive_test.student

?

?

查詢表信息

select * from student;

?

?

查看表的詳細信息

desc formatted student;

?

通過Mysql查看創建的表

?

查看hive的函數?

show functions;

查看函數詳細信息?

desc function sum;?
desc function extended

?

配置hiveserver2

?

Hive從2.0版本開始,為HiveServer2提供了一個簡單的WEB UI界面
<property>
<name>hive.server2.webui.host</name>
<value>192.168.56.104</value>
</property><property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>

?

啟動hiveserver2

hive --service hiveserver2

?

http://192.168.56.104:10002/

?

配置hwi

https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface#HiveWebInterface-WhatIstheHiveWebInterface

http://www.cnblogs.com/xinlingyoulan/p/6025692.html

?

http://apache.fayea.com/hive/hive-2.1.1/

下載源碼apache-hive-2.1.1-src.tar.gz

tar -xzf apache-hive-2.1.1-src.tar.gz
[hdp@hdp265m web]$ pwd
/home/hdp/apache-hive-2.1.1-src/hwi/web
[hdp@hdp265m web]$ jar -cvf hive-hwi-2.1.1.war *
[hdp@hdp265m web]$ cp hive-hwi-2.1.1.war $HIVE_HOME/lib 

下載安裝ant

http://ant.apache.org/bindownload.cgi

如果你的jdf是7則不要安裝最新的ant

?

tar -zxvf apache-ant-1.9.7-bin.tar.gz
mv apache-ant-1.9.7 ant110

su root修改/etc/profile

export ANT_HOME=/home/hdp/ant197
export PATH=$PATH:$ANT_HOME/bin

?

驗證ant是否安裝成功

[hdp@hdp265m ~]$ ant -version
Apache Ant(TM) version 1.9.7 compiled on April 9 2016

啟動hwi

hive --service hwi

?

如果有下面的錯誤

The following error occurred while executing this line:
jar:file:/home/linux/application/hive2.1.0/lib/ant-1.9.1.jar!/org/apache/tools/ant/antlib.xml:37: Could not create task or type of type: componentdef.

根據錯誤信息,HIVEHOME/libant.jar1.9.1ant1.9.7HIVEHOME/lib下的ant.jar版本為1.9.1,但是我裝的ant版本為1.9.7,因此該錯誤是因為版本不一致導致的。因此,需要把{ANT_HOME}/lib下的ant.jar包copy到${HIVE_HOME}/lib下,并修改權限為777。使用的命令如下:

cp ${ANT_HOME}/lib/ant.jar  ${HIVE_HOME}/lib/ant-1.9.7.jar
cd ${HIVE_HOME}/lib
chmod 777 ant-1.9.7.jar

?

?

如果前面問題都解決了可以每次多刷新幾遍

http://192.168.56.104:9999/hwi/

?

啟動metastore服務

hive --service metastore  

?

?

?

?

?

?

?

?

?

Hive 快速入門

https://cwiki.apache.org/confluence/display/Hive/GettingStarted

Hive語言手冊

https://cwiki.apache.org/confluence/display/Hive/LanguageManual

Hive指南

https://cwiki.apache.org/confluence/display/Hive/Tutorial

?

轉載于:https://www.cnblogs.com/dadadechengzi/p/6721581.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252880.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xcode9學習筆記67 - 打印查看程序沙箱結構中常用的幾個目錄

override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.//首先獲得應用程序目錄的路徑&#xff0c;在該目錄下有三個文件夾&#xff1a;文檔目錄、庫目錄、臨時目錄以及一個程序包。該目錄就是應用程序的…

檢測raid類型和磁盤壞道腳本

#!/bin/sh #腳本功能&#xff1a; #安裝工具MegaCli64 #Host Information&#xff1a;主機名和ip地址 #Raid Information&#xff1a;raid信息和充電狀態 #WARNING Information&#xff1a;MediaErrcount檢測壞塊和哪塊盤 #Disk Information&#xff1a;磁盤信息 #上傳MegaC…

簡單論述市場營銷管理的基本過程

http://www.chinadmd.com/file/uvc3uaosocwevsetrzpaereo_1.html

Javascript-Switch

JavaScript Switch 語句 請使用 switch 語句來選擇要執行的多個代碼塊之一。 語法 switch(n) { case 1:執行代碼塊 1break; case 2:執行代碼塊 2break; default:n 與 case 1 和 case 2 不同時執行的代碼 }工作原理&#xff1a;首先設置表達式 n&#xff08;通常是一個變量&…

《SpringBoot揭秘 快速構建微服務體系》讀后感(三)

SpringApplication&#xff1a;SpringBoot程序啟動的一站式解決方案 深入探索SpringApplication執行流程 因為書上的版本是1.2的&#xff0c;比較老&#xff0c;這里參考http://blog.csdn.net/zxzzxzzxz123/article/details/69941910 public ConfigurableApplicationContext ru…

裝飾器函數

1.裝飾器 ? 裝飾器&#xff1a;在不改變原函數的調用方式和函數&#xff0c;額外的增加功能 簡單裝飾器def timer(func):def inner():print(time.time())func() # 原來的函數return inner ? timer # func1 timer(func1) def func1():print(func1) 函數帶返回值def timer…

6G SDI/12G SDI 基帶信號無壓縮傳輸方案介紹

認知數字像素分辨率&#xff1a; 首先從分辨率(數字像素)角度來講&#xff0c;從標清時代走到高清&#xff0c;從720x576到現在的1920x1080&#xff0c;寬高比從4:3到16:9&#xff0c;這個是我們比較熟悉的&#xff0c;4K實際上是建立在高清基礎之上的&#xff0c;我們稱之為“…

4月18日

u盤丟了&#xff0c;毀滅性的災難 希望明天可以找到它&#xff0c;不然萬字的策劃案就要重寫 這是一個災難 轉載于:https://www.cnblogs.com/dandansang/p/6731174.html

玩轉SSH端口轉發

ssh端口轉發(tunnel) 我們在實施項目部署時經常會遇到一種問題&#xff0c;那就是當我們給一些安全系數高的客戶部署服務時&#xff0c;大多都不會給我們提供公網訪問的權限&#xff0c;但是很多時候為了方便又會允許服務器直接訪問公網&#xff0c;遇到這種情況大多有兩種辦法…

12.4日團隊工作總結

今天團隊的主要任務是注重于畫圖工具的設計&#xff0c;這就意味著我們首要的任務是將畫圖工具設置出來并可以完整運行&#xff0c;接下來才能顧及之前的改圖軟件&#xff0c;但今天在設計的過程中&#xff0c;遇到了兩者無法無縫結合的問題&#xff0c;目前還沒解決。 轉載于:…

WIFI DFS測試介紹

http://www.eefocus.com/summer12200/blog/09-02/166038_b9094.html 1. 概述: 目前在802.11系列標準中&#xff0c;涉及物理層的有4個標準&#xff1a;802.11、802.11b、802.11a、802.11g。根據不同的物理層標準&#xff0c;無線局域網設備通常被歸為不同的類別&#xff0c;如…

git 遠程倉庫版本的回退以及git reset 幾種常用方式記錄

由于 github push 了兩個比較潦草的commit, 自己很不滿意&#xff0c;又不想重新開vpn進行上傳&#xff0c;所以找了一下相關的教程。 最后研究了一下&#xff0c;原理為先在本地還原到你想要的commit,然后強制push 到遠程倉庫&#xff0c;強制將遠程倉庫還原到你想要的commit.…

【PHP】詳解 $_SERVER 函數中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF區別

實例&#xff1a;1、http://localhost/index.php/Home/Home/index.html $_SERVER[QUERY_STRING] ""; $_SERVER[REQUEST_URI] "/index.php/Home/H1/index.html";$_SERVER[SCRIPT_NAME] "/index.php";$_SERVER[PHP_SELF] "/index.php/H…

微軟發布Azure Cosmos DB產品以及新的物聯網解決方案

微軟于當地時間2018年12月4日召開了一年一度的以云計算和數據為中心的開發者大會&#xff0c;在會上微軟正式發布Azure機器學習服務(Azure Machine Learning service)&#xff0c;這是一個云平臺&#xff0c;允許開發人員構建、訓練和部署AI模型&#xff0c;并對Azure認知服務(…

安裝Windows10,Ubuntu雙系統14.04LTS記錄

兩種方式都可以制作https://jingyan.baidu.com/article/19192ad85aa445e53e5707c2.htmlhttps://www.cnblogs.com/arcsinw/p/5303615.html

物理層、數據鏈路層網絡設備工作原理

物理層網絡設備有中繼器、集線器。 中繼器的功能是將接收到的信號進行再放大然后傳輸出去&#xff0c;作用是將擴展網絡設備信號傳輸的物理范圍&#xff0c;缺點是擴大數據信號的同時也擴大的噪聲&#xff0c;不能夠進行廣播隔離&#xff0c;網絡利用率很低&#xff0c;現在基本…

java中重載和重寫的區別

1:重載是指一個類中定義多個方法名相同但參數列表不同的方法&#xff0c;在編譯時根據方法參數的個數和類型來決定綁定哪個方法&#xff1b; 重寫是指在子類中定義和父類方法簽名完全一樣的方法&#xff0c;在程序運行時根據對象的類型不同而調用不同的方法。&#xff08;注意不…

大華Global Shutter CMOS攝像機剖析

http://www.itavcn.com/news/201709/20170912/63257.shtml

最短路徑——Dijkstra算法以及二叉堆優化(含證明)

一般最短路徑算法習慣性的分為兩種&#xff1a;單源最短路徑算法和全頂點之間最短路徑。前者是計算出從一個點出發&#xff0c;到達所有其余可到達頂點的距離。后者是計算出圖中所有點之間的路徑距離。 單源最短路徑 Dijkstra算法 思維 本質上是貪心的思想&#xff0c;聲明一個…

linux shmget shmctl

shmgetint shmget(key_t key, size_t size, int flag);key: 標識符的規則size:共享存儲段的字節數flag:讀寫的權限返回值&#xff1a;成功返回共享存儲的id&#xff0c;失敗返回-1key_t key----------------------------------------------- key標識共享內存的鍵值: 0/IPC_P…