<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Hadoop入門進(jìn)階課程8--Hive介紹和安裝部署

      本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,博主為石山園,博客地址為 http://www.rzrgm.cn/shishanyuan  。該系列課程是應(yīng)邀實驗樓整理編寫的,這里需要贊一下實驗樓提供了學(xué)習(xí)的新方式,可以邊看博客邊上機(jī)實驗,課程地址為 https://www.shiyanlou.com/courses/237

      【注】該系列所使用到安裝包、測試數(shù)據(jù)和代碼均可在百度網(wǎng)盤下載,具體地址為 http://pan.baidu.com/s/10PnDs,下載該PDF文件

      1搭建環(huán)境

      部署節(jié)點操作系統(tǒng)為CentOS,防火墻和SElinux禁用,創(chuàng)建了一個shiyanlou用戶并在系統(tǒng)根目錄下創(chuàng)建/app目錄,用于存放Hadoop等組件運(yùn)行包。因為該目錄用于安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權(quán)限(一般做法是root用戶在根目錄下創(chuàng)建/app目錄,并修改該目錄擁有者為shiyanlou(chown R shiyanlou:shiyanlou /app)。

      Hadoop搭建環(huán)境:

      l  虛擬機(jī)操作系統(tǒng): CentOS6.6  64位,單核,1G內(nèi)存

      l  JDK1.7.0_55 64

      l  Hadoop1.1.2

      2Hive介紹

      HiveFacebook開發(fā)的構(gòu)建于Hadoop集群之上的數(shù)據(jù)倉庫應(yīng)用,它提供了類似于SQL語法的HQL語句作為數(shù)據(jù)訪問接口,這使得普通分析人員的應(yīng)用Hadoop的學(xué)習(xí)曲線變小,Hive有如下特性:

      lHive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并使用sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析;

      lHive是建立在 Hadoop 上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。同時,這個語言也允許熟悉 MapReduce 開發(fā)者的開發(fā)自定義的 Mapper Reducer 來處理內(nèi)建的Mapper Reducer 無法完成的復(fù)雜的分析工作。

      2.1 Hive與關(guān)系數(shù)據(jù)庫的區(qū)別

      使用Hive的命令行接口很像操作關(guān)系數(shù)據(jù)庫,但是Hive和關(guān)系數(shù)據(jù)庫還是有很大的不同, Hive與關(guān)系數(shù)據(jù)庫的區(qū)別具體如下:

      1. Hive和關(guān)系數(shù)據(jù)庫存儲文件的系統(tǒng)不同,Hive使用的是HadoopHDFSHadoop的分布式文件系統(tǒng)),關(guān)系數(shù)據(jù)庫則是服務(wù)器本地的文件系統(tǒng);

      2. Hive使用的計算模型是Mapreduce,而關(guān)系數(shù)據(jù)庫則是自身的計算模型;

      3.關(guān)系數(shù)據(jù)庫都是為實時查詢的業(yè)務(wù)進(jìn)行設(shè)計的,而Hive則是為海量數(shù)據(jù)做數(shù)據(jù)挖掘設(shè)計的,實時性很差;實時性的區(qū)別導(dǎo)致Hive的應(yīng)用場景和關(guān)系數(shù)據(jù)庫有很大的不同;

      4. Hive很容易擴(kuò)展自己的存儲能力和計算能力,這個是繼承Hadoop的,而關(guān)系數(shù)據(jù)庫在這個方面要比數(shù)據(jù)庫差很多。

      2.2  Hive架構(gòu)

      clip_image002

      由上圖可知,HadoopmapreduceHive架構(gòu)的根基。Hive架構(gòu)包括如下組件:CLIcommand line interface)、JDBC/ODBCThrift ServerWEB GUImetastoreDriver(ComplierOptimizerExecutor),這些組件分為兩大類:服務(wù)端組件和客戶端組件。

      服務(wù)端組件:

      lDriver組件:該組件包括ComplierOptimizerExecutor,它的作用是將HiveQL(類SQL)語句進(jìn)行解析、編譯優(yōu)化,生成執(zhí)行計劃,然后調(diào)用底層的mapreduce計算框架;

      lMetastore組件:元數(shù)據(jù)服務(wù)組件,這個組件存儲Hive的元數(shù)據(jù),Hive的元數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫里,Hive支持的關(guān)系數(shù)據(jù)庫有derbymysql。元數(shù)據(jù)對于Hive十分重要,因此Hive支持把metastore服務(wù)獨(dú)立出來,安裝到遠(yuǎn)程的服務(wù)器集群里,從而解耦Hive服務(wù)和metastore服務(wù),保證Hive運(yùn)行的健壯性;

      lThrift服務(wù):thriftfacebook開發(fā)的一個軟件框架,它用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā),Hive集成了該服務(wù),能讓不同的編程語言調(diào)用hive的接口。

       

      客戶端組件:

      lCLIcommand line interface,命令行接口。

      lThrift客戶端:上面的架構(gòu)圖里沒有寫上Thrift客戶端,但是Hive架構(gòu)的許多客戶端接口是建立在thrift客戶端之上,包括JDBCODBC接口。

      lWEBGUIHive客戶端提供了一種通過網(wǎng)頁的方式訪問hive所提供的服務(wù)。這個接口對應(yīng)Hivehwi組件(hive web interface),使用前要啟動hwi服務(wù)。

       

      3搭建Hive環(huán)境

      3.1 安裝MySql數(shù)據(jù)庫

      3.1.1 下載mysql安裝文件

      下載地址:http://dev.mysql.com/downloads/mysql/#downloads,使用系統(tǒng)為CentOS選擇 Red Hat Enterprise Linux/Oracle系列,也可以在/home/shiyanlou/install-pack目錄中找到這些安裝包:

      clip_image004

      操作系統(tǒng)為64位,選擇對應(yīng)安裝包進(jìn)行下載:

      clip_image006

      clip_image008

      clip_image010

      下載在本地目錄如下圖:

      clip_image012

      3.1.2 安裝mysql

      使用命令查看是否已經(jīng)安裝過mysql

      sudo rpm -qa | grep -i mysql

      可以看到如下圖的所示:

      clip_image014

      說明之前安裝了mysql,可以參考4.1進(jìn)行卸載舊的mysql。如果以前沒有安裝mysql則進(jìn)入安裝文件的目錄,安裝mysql服務(wù)端

      cd /home/shiyanlou/install-pack

      sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm

      clip_image016

      出現(xiàn)異常,通過分析缺少libaio依賴包,使用如下命令進(jìn)行安裝:

      sudo yum install libaio

      clip_image018

      再次安裝mysql,并安裝mysql客戶端、mysql-devel

      sudo rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm

      sudo rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm

      sudo rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm

      clip_image020

      3.1.3 啟動mysql服務(wù)

      通過下面查看mysql服務(wù)狀態(tài):

      sudo service mysql status

      如果mysql沒有啟動,通過如下命令進(jìn)行啟動:

      sudo service mysql start

      clip_image022

      3.1.4 設(shè)置root密碼

      CentOS6.5操作系統(tǒng)使用如下命令給mysql設(shè)置root密碼時,出現(xiàn)如下錯誤:

      /usr/bin/mysqladmin -u root password 'root';

      clip_image024

      /usr/bin/mysqladmin: connect to server at 'localhost' failed

      error: 'Access denied for user 'root'@'localhost' (using password: NO)'

      可以進(jìn)入安全模式進(jìn)行設(shè)置root密碼

      (1) 停止mysql服務(wù)

      使用如下命令停止mysql服務(wù):

      sudo service mysql stop

      sudo service mysql status

      (2) 跳過驗證啟動mysql

      使用如下命令驗證啟動mysql,由于&結(jié)尾是后臺運(yùn)行進(jìn)程,運(yùn)行該命令可以再打開命令窗口或者Ctr+C繼續(xù)進(jìn)行下步操作:

      sudo mysqld_safe --skip-grant-tables &

      sudo service mysql status

      clip_image026

      (3) 跳過驗證啟動MySQL

      驗證mysql服務(wù)已經(jīng)在后臺運(yùn)行后,執(zhí)行如下語句,其中后面三條命令是在mysql語句:

      mysql -u root

      mysql>use mysql;

      mysql>update user set password = password('root') where user = 'root';

      mysql>flush privileges;

      clip_image028

      (4) 跳過驗證啟動MySQL

      重啟mysql服務(wù)并查看狀態(tài)

      sudo service mysql restart

      sudo service mysql status

      clip_image030

      3.1.5 設(shè)置Hive用戶

      進(jìn)入mysql命令行,創(chuàng)建hive用戶并賦予所有權(quán)限:

      mysql -uroot -proot

      mysql>set password=password('root');

      mysql>create user 'hive' identified by 'hive';

      mysql>grant all on *.* TO 'hive'@'%' identified by 'hive' with grant option;

      mysql>grant all on *.* TO 'hive'@'localhost' identified by 'hive' with grant option;

      mysql>flush privileges;

      clip_image032

      (注意:如果是root第一次登錄數(shù)據(jù)庫,需要重新設(shè)置一下密碼,所報異常信息如下:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

      3.1.6 創(chuàng)建hive數(shù)據(jù)庫

      使用hive用戶登錄,創(chuàng)建hive數(shù)據(jù)庫:

      mysql -uhive -phive -h hadoop

      mysql>create database hive;

      mysql>show databases;

      clip_image034

      3.2 安裝Hive

      3.2.1 解壓并移動Hive安裝包

      可以到Apache基金hive官網(wǎng)http://hive.apache.org/downloads.html,選擇鏡像下載地址:http://mirrors.cnnic.cn/apache/hive/下載一個穩(wěn)定版本,如下圖所示:

      clip_image036

      也可以在/home/shiyanlou/install-pack目錄中找到該安裝包,解壓該安裝包并把該安裝包復(fù)制到/app目錄中

      cd /home/shiyanlou/install-pack

      tar -xzf hive-0.12.0-bin.tar.gz

      mv hive-0.12.0-bin /app/hive-0.12.0

      clip_image038

      3.2.2 解壓并移動MySql驅(qū)動包

      mysql官網(wǎng)進(jìn)入下載頁面:http://dev.mysql.com/downloads/connector/j/ ,選擇所需要的版本進(jìn)行下載,這里下載的zip格式的文件

      clip_image040

       

      也可以在/home/shiyanlou/install-pack目錄中找到該安裝包,解壓該安裝包并把該安裝包復(fù)制到/app/lib目錄中

      cd /home/shiyanlou/install-pack

      cp mysql-connector-java-5.1.22-bin.jar /app/hive-0.12.0/lib

      clip_image042

      3.2.3 配置/etc/profile環(huán)境變量

      使用如下命令打開/etc/profile文件:

      sudo vi /etc/profile

      設(shè)置如下參數(shù):

      export HIVE_HOME=/app/hive-0.12.0

      export PATH=$PATH:$HIVE_HOME/bin

      export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin

      clip_image044

      使配置文件生效:

      source /etc/profile

      echo $PATH

      3.2.4 設(shè)置hive-env.sh配置文件

      進(jìn)入hive-0.12.0/conf目錄,復(fù)制hive-env.sh.templaetehive-env.sh

      cd /app/hive-0.12.0/conf

      cp hive-env.sh.template hive-env.sh

      sudo vi hive-env.sh

      clip_image046

      分別設(shè)置HADOOP_HOMEHIVE_CONF_DIR兩個值:

      # Set HADOOP_HOME to point to a specific hadoop install directory

      export HADOOP_HOME=/app/hadoop-1.1.2

      # Hive Configuration Directory can be controlled by:

      export HIVE_CONF_DIR=/app/hive-0.12.0/conf

      clip_image048

      3.2.5 設(shè)置hive-site.xml配置文件

      復(fù)制hive-default.xml.templaetehive-site.xml

      cd /app/hive-0.12.0/conf

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

      sudo vi hive-site.xml

      clip_image050

      (1) 加入配置項

      默認(rèn)metastore在本地,添加配置改為非本地

      <property>

        <name>hive.metastore.local</name>

        <value>false</value>

      </property>

      clip_image052

      (2) 修改配置項

      hive默認(rèn)為derby數(shù)據(jù)庫,需要把相關(guān)信息調(diào)整為mysql數(shù)據(jù)庫

      <property>

        <name>hive.metastore.uris</name>

        <value>thrift://hadoop:9083</value>

        <description>Thrift URI for the remote metastore. ...</description>

      </property>

      <property>

        <name>javax.jdo.option.ConnectionURL</name>

        <value>jdbc:mysql://hadoop:3306/hive?=createDatabaseIfNotExist=true</value>

        <description>JDBC connect string for a JDBC metastore</description>

      </property>

      <property>

        <name>javax.jdo.option.ConnectionDriverName</name>

        <value>com.mysql.jdbc.Driver</value>

        <description>Driver class name for a JDBC metastore</description>

      </property>

      <property>

        <name>javax.jdo.option.ConnectionUserName</name>

        <value>hive</value>

        <description>username to use against metastore database</description>

      </property>

      <property>

        <name>javax.jdo.option.ConnectionPassword</name>

        <value>hive</value>

        <description>password to use against metastore database</description>

      </property>

      clip_image054

      clip_image056

      (3) 訂正錯誤項

      在配置文件2000行左右配置項hive.server2.thrift.sasl.qop原來為<value>auth</auth>,按照如下進(jìn)行修改:

      <property>

        <name>hive.server2.thrift.sasl.qop</name>

        <value>auth</value>

        <des.....

      </property>

      clip_image058

      并把hive.metastore.schema.verification配置項值修改為false

      <property>

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

        <value>false</value>

         <desc....>

      </property>

      clip_image060

      3.3 驗證部署

      3.3.1 啟動metastorehiveserver

      在使用hive之前需要啟動metastorehiveserver服務(wù),通過如下命令啟用:

      hive --service metastore &

      hive --service hiveserver &

      clip_image062

      啟動用通過jps命令可以看到兩個進(jìn)行運(yùn)行在后臺

      clip_image064

      3.3.2 hive中操作

      登錄hive,在hive創(chuàng)建表并查看該表,命令如下:

      hive

      hive>create table test(a string, b int);

      hive>show tables;

      hive>desc test;

      clip_image066

      登錄mysql,在TBLS表中查看新增test表:

      mysql -uhive -phive

      mysql>use hive;

      mysql>select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;

      clip_image068

      4問題解決

      4.1 卸載舊的mysql

      (1)  查找以前是否安裝有mysql

      使用命令查看是否已經(jīng)安裝過mysql

      sudo rpm -qa | grep -i mysql

      可以看到如下圖的所示:

      clip_image014[1]

      說明之前安裝了:

      MySQL-client-5.6.21-1.el6.x86_64

      MySQL-server-5.6.21-1.el6.x86_64

      MySQL-devel-5.6.21-1.el6.x86_64

      如果沒有結(jié)果,可以進(jìn)行跳到3.1.3步驟的mysql數(shù)據(jù)庫安裝

      (2)  停止mysql服務(wù)、刪除之前安裝的mysql

      停止mysql服務(wù)、刪除之前安裝的mysql刪除命令:rpm -ev nodeps 包名

      sudo rpm -ev MySQL-server-5.6.21-1.el6.x86_64

      sudo rpm -ev MySQL-devel-5.6.21-1.el6.x86_64

      sudo rpm -ev MySQL-client-5.6.21-1.el6.x86_64

      clip_image070

      如果存在CentOS自帶mysql-libs-5.6.21-1.el6.x86_64使用下面的命令卸載即可

      sudo rpm -ev --nodeps mysql-libs-5.6.21-1.el6.x86_64

      (3)  查找之前老版本mysql的目錄并且刪除老版本mysql的文件和庫

      sudo find / -name mysql

      clip_image072

      刪除對應(yīng)的mysql目錄

      sudo rm -rf /usr/lib64/mysql

      sudo rm -rf /var/lib/mysql

      clip_image074

      (4)  再次查找機(jī)器是否安裝mysql

      sudo rpm -qa | grep -i mysql

      無結(jié)果,說明已經(jīng)卸載徹底、接下來直接安裝mysql即可

      clip_image076

      4.2 Hive啟動,報CommandNeedRetryException異常

      啟動hive時,出現(xiàn)CommandNeedRetryException異常,具體信息如下:

      clip_image078

      Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/hadoop/hive/ql/CommandNeedRetryException

              at java.lang.Class.forName0(Native Method)

              at java.lang.Class.forName(Class.java:270)

              at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

      Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException

              at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

              at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

              at java.security.AccessController.doPrivileged(Native Method)

              at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

              at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

              at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

      由于以前使用hadoop時,修改hadoop-env.shHADOOP_CLASSPATH配置項,由以前的:

      export HADOOP_CLASSPATH=/app/hadoop-1.1.2/myclass

      修改為:

      export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/app/hadoop-1.1.2/myclass

      clip_image080

       

      clip_image082

      4.3 Hive中使用操作語言

      啟動hive后,使用Hql出現(xiàn)異常,需要啟動metastorehiveserver

      clip_image084

      FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

      在使用hive之前需要啟動metastorehiveserver服務(wù),通過如下命令啟用:

      hive --service metastore &

      hive --service hiveserver &

      clip_image086

      啟動用通過jps命令可以看到兩個進(jìn)行運(yùn)行在后臺

      clip_image064[1]

      posted @ 2015-07-17 09:03  shishanyuan  閱讀(3891)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 四虎影视www在线播放| 韩国免费a级毛片久久| 午夜福利精品国产二区| 少妇高潮水多太爽了动态图| 日本一区二区三本视频在线观看| 亚洲国产五月综合网| 亚洲一区二区av观看| 男人av无码天堂| 国产成人免费午夜在线观看| 国产99久一区二区三区a片| 日本久久一区二区三区高清| 亚洲色大成网站WWW久久| 亚洲欧美综合中文| 国产精品中文字幕久久| 国产午夜福利小视频合集| 亚洲乱码中文字幕小综合| 4虎四虎永久在线精品免费| 又黄又爽又色的少妇毛片| 成熟丰满熟妇av无码区| 日本中文字幕一区二区三| 国产免费又黄又爽又色毛| 亚洲AV无码成H人动漫无遮挡 | 亚洲精品国产自在现线最新| 伊人久久大香线蕉综合影院| 亚洲成a人无码av波多野| 欲香欲色天天天综合和网| 久久精品一区二区三区综合| 国产偷窥熟女高潮精品视频| 一区二区亚洲人妻精品| 亚洲码和欧洲码一二三四| 国产国拍精品av在线观看| 五月婷婷久久中文字幕| 苍梧县| 国产亚洲精品第一综合另类| 亚洲欧美中文字幕日韩一区二区| 日韩放荡少妇无码视频| 99国产精品一区二区蜜臀| 国产精品99精品久久免费| 91精品国产蜜臀在线观看| 东方四虎在线观看av| 另类 专区 欧美 制服|