一、Hive的概述; 二、Hive的體系架構(gòu); 三、探討Hadoop全家(生態(tài)圈); 四、Hive與傳統(tǒng)數(shù)據(jù)庫(kù)相比; 五、Hive的數(shù)據(jù)模型(自主學(xué)習(xí)); 六、搭建Haoop 2.7.6結(jié)合hive2.3.3實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)管理; 一、Hive的概述; 背景:Hive起源于Facebook(一個(gè)美國(guó)的社交服務(wù)網(wǎng)絡(luò))。Facebook有著大量的數(shù)據(jù),而Hadoop是一個(gè)開(kāi)源的MapReduce實(shí)現(xiàn),可以輕松處理大量的數(shù)據(jù)。但是MapReduce程序?qū)τ贘ava程序員來(lái)說(shuō)比較容易寫(xiě),但是對(duì)于其他語(yǔ)言使用者來(lái)說(shuō)不太方便。此時(shí)Facebook最早地開(kāi)始研發(fā)Hive,它讓對(duì)Hadoop使用SQL查詢(實(shí)際上SQL后臺(tái)轉(zhuǎn)化為了MapReduce)成為可能,那些非Java程序員也可以更方便地使用。hive最早的目的也就是為了分析處理海量的日志; 概述:hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能, Hadoop 通常都有較高的延遲并且在作業(yè)提交和調(diào)度的時(shí)候需要大量的開(kāi)銷(xiāo)。因此Hive并不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢,例如,Hive 在幾百M(fèi)B 的數(shù)據(jù)集上執(zhí)行查詢一般有分鐘級(jí)的時(shí)間延遲; Hive可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)類(lèi)SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開(kāi)發(fā)專(zhuān)門(mén)的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析; 二、Hive的體系架構(gòu); 體系架構(gòu): 1.用戶接口主要有三個(gè):CLI,Client 和 WUI。其中最常用的是CLI,Cli啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè)Hive副本。Client是Hive的客戶端,用戶連接至Hive Server。在啟動(dòng) Client模式的時(shí)候,需要指出Hive Server所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng)Hive Server。WUI是通過(guò)瀏覽器訪問(wèn)Hive; Hive執(zhí)行請(qǐng)求的流程: 三、探討Hadoop全家(生態(tài)圈); https://www.sohu.com/a/218420440_505794 ##Hadoop全家 https://www.cnblogs.com/zhangwuji/p/7594725.html ##Hadoop發(fā)展史 四、Hive與傳統(tǒng)數(shù)據(jù)庫(kù)相比; 由于Hive采用了SQL的查詢語(yǔ)言HQL,因此很容易將Hive理解為數(shù)據(jù)庫(kù)。其實(shí)從結(jié)構(gòu)上來(lái)看,Hive和數(shù)據(jù)庫(kù)除了擁有類(lèi)似的查詢語(yǔ)言,再無(wú)類(lèi)似之處。數(shù)據(jù)庫(kù)可以用在Online的應(yīng)用中,但是Hive是為數(shù)據(jù)倉(cāng)庫(kù)而設(shè)計(jì)的,清楚這一點(diǎn),有助于從應(yīng)用角度理解Hive的特性; 五、Hive的數(shù)據(jù)模型(自主學(xué)習(xí)); 概述:對(duì)于數(shù)據(jù)存儲(chǔ),Hive沒(méi)有專(zhuān)門(mén)的數(shù)據(jù)存儲(chǔ)格式,也沒(méi)有為數(shù)據(jù)建立索引,用戶可以非常自由的組織Hive中的表,只需要在創(chuàng)建表的時(shí)候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive就可以解析數(shù)據(jù)。Hive中所有的數(shù)據(jù)都存儲(chǔ)在HDFS中,存儲(chǔ)結(jié)構(gòu)主要包括數(shù)據(jù)庫(kù)、文件、表和視圖。Hive中包含以下數(shù)據(jù)模型:Table內(nèi)部表、External Table外部表、Partition分區(qū)、Bucket桶。自行百度Hive的數(shù)據(jù)模型; 六、搭建Haoop 2.7.6結(jié)合hive2.3.3實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)管理; 案例環(huán)境:
案例步驟: ?安裝hive軟件程序; ?準(zhǔn)備hive的元數(shù)據(jù)存儲(chǔ)位置Mysql數(shù)據(jù)庫(kù); ?準(zhǔn)備hive服務(wù)需要存儲(chǔ)文件的目錄; ?配置hive的配置文件; ?配置hive服務(wù)連接mysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng); ?初始化hive連接mysql數(shù)據(jù)庫(kù); ?啟動(dòng)并連接hive服務(wù); ?學(xué)習(xí)hive中的管理操作; ?將文件內(nèi)容導(dǎo)入到hive的表中; ?通過(guò)web頁(yè)面查看HDFS文件系統(tǒng)中的數(shù)據(jù); ?通過(guò)mysql管理控制臺(tái)驗(yàn)證mysql中存儲(chǔ)的hive的元數(shù)據(jù); ?安裝hive軟件程序; [root@master ~]# ls /root/apache-hive-2.3.3-bin.tar.gz /root/apache-hive-2.3.3-bin.tar.gz [root@master ~]# tar zxvf /root/apache-hive-2.3.3-bin.tar.gz [root@master ~]# mv apache-hive-2.3.3-bin/ /usr/local/hive [root@master ~]# chown hadoop:hadoop /usr/local/hive/ -R [root@master ~]# vi /etc/profile export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:. [root@master ~]# source /etc/profile ?準(zhǔn)備hive的元數(shù)據(jù)存儲(chǔ)位置Mysql數(shù)據(jù)庫(kù); [root@master ~]# yum -y install mariadb-server mariadb [root@master ~]# sed -i 's/\[mysqld\]/\[mysqld\]\nskip_name_resolve/g' /etc/my.cnf ##注:需要關(guān)閉mysql服務(wù)器的反向解析,不然會(huì)在初始化myssql數(shù)據(jù)庫(kù)時(shí)出現(xiàn)反向解析情況,無(wú)法初始化 [root@master ~]# systemctl start mariadb [root@master ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@master ~]# mysqladmin -uroot password [root@master ~]# mysql -uroot -p123123 MariaDB [(none)]> grant all on *.* to root@'192.168.100.101' identified by '123123'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit ?準(zhǔn)備hive服務(wù)需要存儲(chǔ)文件的目錄; [root@master ~]# su - hadoop [hadoop@master ~]$ hadoop fs -mkdir -p /user/hive/warehouse [hadoop@master ~]$ hadoop fs -chmod 777 /user/hive/warehouse [hadoop@master ~]$ hadoop fs -mkdir -p /tmp/hive/ [hadoop@master ~]$ hadoop fs -chmod 777 /tmp/hive [hadoop@master ~]$ hadoop fs -ls / Found 2 items drwxr-xr-x - hadoop supergroup 0 2018-08-27 20:51 /tmp drwxr-xr-x - hadoop supergroup 0 2018-08-27 20:51 /user [hadoop@master ~]$ mkdir /usr/local/hive/tmp [hadoop@master ~]$ mkdir /usr/local/hive/tmp/root ?配置hive的配置文件; [hadoop@master ~]$ cp /usr/local/hive/conf/hive-default.xml.template /usr/local/hive/conf/hive-site.xml [hadoop@master ~]$ mv /usr/local/hive/conf/hive-env.sh.template /usr/local/hive/conf/hive-env.sh [hadoop@master ~]$ vi /usr/local/hive/conf/hive-site.xml 364 365 366 367 368 37 38 39 40 41 73 74 75 76 77 78 79 80 81 82 1683 1684 1685 1686 1687 3974 3975 3976 3977 3978 543 544 545 546 550 551 1018 1019 1020 1021 1022 1043 1044 1045 1046 1047 528 529 530 531 532 744 745 746 747 753 754 :wq [hadoop@master ~]$ vi /usr/local/hive/conf/hive-env.sh ##設(shè)置hive的環(huán)境變量 export HADOOP_HOME=/usr/local/hadoop export HIVE_CONF_DIR=/usr/local/hive/conf export HIVE_AUX_JARS_PATH=/usr/local/hive/lib :wq ?配置hive服務(wù)連接mysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng); [hadoop@master ~]$ wget https://cdn.//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz [hadoop@master ~]$ ls mysql-connector-java-5.1.46.tar.gz mysql-connector-java-5.1.46.tar.gz [hadoop@master ~]$ tar zxvf mysql-connector-java-5.1.46.tar.gz [hadoop@master ~]$ cp /home/hadoop/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /usr/local/hive/lib/ [hadoop@master ~]$ ls /usr/local/hive/lib/mysql-connector-java-5.1.46.jar /usr/local/hive/lib/mysql-connector-java-5.1.46.jar ?初始化hive連接mysql數(shù)據(jù)庫(kù); [hadoop@master ~]$ /usr/local/hive/bin/schematool -dbType mysql -initSchema ?啟動(dòng)并連接hive服務(wù); [hadoop@master ~]$ hive hive> show databases; OK default Time taken: 4.695 seconds, Fetched: 1 row(s) ?學(xué)習(xí)hive中的管理操作; hive> show functions; ##查看可用函數(shù) OK ! != $sum0 % & * + - / < <= ... hive> desc function sum; ##查看函數(shù)詳細(xì)信息 OK sum(x) - Returns the sum of a set of numbers Time taken: 0.006 seconds, Fetched: 1 row(s) hive> create database linuxfan; ##創(chuàng)建數(shù)據(jù)庫(kù)linuxfan OK Time taken: 0.282 seconds hive> show databases; OK default linuxfan Time taken: 0.023 seconds, Fetched: 2 row(s) hive> use linuxfan; OK Time taken: 0.025 seconds hive> create table t1(id int,name string) row format delimited fields terminated by '\t'; ##創(chuàng)建表并且指定字段id和字段name之間的分隔使用\t制表符; OK Time taken: 0.581 seconds hive> show tables; OK t1 Time taken: 0.042 seconds, Fetched: 1 row(s) hive> exit; ?將文件內(nèi)容導(dǎo)入到hive的表中; [hadoop@master ~]$vi ./1.txt ##001和zs之間必須手動(dòng)敲tab鍵,不得復(fù)制粘貼 001 zs 002 ls 003 ww 004 xm [hadoop@master ~]$ hive hive> load data local inpath '/home/hadoop/1.txt' into table linuxfan.t1; Loading data to table linuxfan.t1; OK Time taken: 6.277 seconds hive> select * from linuxfan.t1; OK 1 zs 2 ls 3 ww 4 xm Time taken: 1.861 seconds, Fetched: 4 row(s) hive> exit; ?通過(guò)web頁(yè)面查看HDFS文件系統(tǒng)中的數(shù)據(jù); ?通過(guò)mysql管理控制臺(tái)驗(yàn)證mysql中存儲(chǔ)的hive的元數(shù)據(jù);
|
|
來(lái)自: 夜貓速讀 > 《待分類(lèi)》