環境搭建 Hadoop+Hive(orcfile格式)+Presto實現大數據存儲查詢一


一、前言

Hadoop簡介

Hadoop就是一個實現了Google雲計算系統的開源系統,包括並行計算模型Map/Reduce,分布式文件系統HDFS,以及分布式數據庫Hbase,同時Hadoop的相關項目也很豐富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等.接下來我們使用的是Hive

Hive簡介

Hive 是一個基於 Hadoop的開源數據倉庫工具,用於存儲和處理海量結構化數據。    它把海量數據存儲於 hadoop 文件系統,而不是數據庫,但提供了一套類數據庫的數據存儲和處理機制,並采用 HQL (類 SQL )語言對這些數據進行自動化管理和處理。我們可以把 Hive 中海量結構化數據看成一個個的表,而實際上這些數據是分布式存儲在 HDFS 中的。 Hive 經過對語句進行解析和轉換,最終生成一系列基於 hadoop 的 map/reduce 任務,通過執行這些任務完成數據處理。

Presto簡介

Presto是一個開源的分布式SQL查詢引擎,適用於交互式分析查詢,數據量支持GB到PB字節。Presto的設計和編寫完全是為了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。Presto支持在線數據查詢,包括Hive, Cassandra, 關系數據庫以及專有數據存儲。 一條Presto查詢可以將多個數據源的數據進行合並,可以跨越整個組織進行分析。

二、環境准備

Hadoop2.X

apache-hive-2.1.0

presto-server-0.156.tar.gz

Mysql5.7

三、速度測試

 

四、本機服務器准備

  虛擬機使用linux的centos

  Hadoop 192.168.209.142,192.168.209.140

  hive 192.168.209.140

  presto 192.168.209.140

  mysql 10.0.0.7

五、環境搭建

  1.Hadoop環境搭建<略>

  2.Hive環境搭建

  解壓Hive文件

  [root@HDP134 ~]# tar -zxvf /home/hive/apache-hive-2.1.0-bin.tar.gz

  配置hive

  [root@HDP134 ~]# vi /etc/profile

  因為HIVE用到了Hadoop需要在最下邊加上hadoop和Hive的路徑

  #Hadoop

  export HADOOP_INSTALL=/opt/hadoop

  export PATH=$PATH:$HADOOP_INSTALL/bin

  export HADOOP_HOME=$HADOOP_INSTALL

  #Hive

  export HIVE_HOME=/home/hive/apache-hive-2.1.0-bin

  export PATH=$PATH:$HIVE_HOME/bin

  保存退出之后進入配置文件,復制並生命名hive-env.sh,hive-site.xml

  [root@HDP134 ~]# cd /home/hive/apache-hive-2.1.0-bin/conf

  [root@HDP134 ~]# cp hive-env.sh.template hive-env.sh

  [root@HDP134 ~]# cp hive-default.xml.template hive-site.xml

  配置hive-site.xml

  替換hive-site.xml文件中的 ${system:java.io.tmpdir} 和 ${system:user.name}

 

  默認情況下, Hive的元數據保存在了內嵌的 derby 數據庫里, 但一般情況下生產環境使用 MySQL 來存放 Hive 元數據。

  繼續修改Hive-site.xml配置Mysql

 

<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property>

  保存退出

  由於Hive要使用Hadoop,所以以下所有操作均是在hadoop用戶下操作先為Hadoop賦值目錄權限使用如下命令

  

chown -R hadoop:hadoop /home/hive

  切換用戶

   

  在 Hive 中創建表之前需要使用以下 HDFS 命令創建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中屬性項 hive.metastore.warehouse.dir 的默認值) 目錄並給它們賦寫權限。

 

  至此基本配置已經完成,可以運行Hive了,運行Hive之前需要先開啟Hadoop.

 

  從 Hive 2.1 版本開始, 我們需要先運行 schematool 命令來執行初始化操作。

 

  執行成功之后,可以查看自己的Mysql,我剛配置的mysql庫為Hive,我們可以進行MYSQL執行show databases;查看是否已經創建hive數據庫

 

  我們可以看到已經自動生成了很多表。說明Hive已成功連接Mysql

  我們來運行一下Hive,直接輸入hive命令,即可(一定要是在hadoop下操作,不然會報一些無權限的一大堆錯誤)

 

  hive已啟動,我們可以執行一下show tables;查看一下;

 

  至此hive已安裝完成,后邊會說到如何創建一個orcfile格式的文件。

 

3.Presto安裝

  首先解壓下載好的tar.gz包

   

  配置presto

  進入etc文件,我們總共需要創建並配置5個文件

   

  除去hadoop那個文件夾,另外的5個下邊一一說明

  node.properties:每個節點的環境配置

  jvm.config:jvm 參數

  config.properties:配置 Presto Server 參數

  log.properties:配置日志等級

  Catalog Properties:Catalog 的配置

 1>node.properties配置

 

  節點配置node.id=1

  切記:每個節點不能重復我本地把協調和生產節點部署到了一起

 2>config.properties

 

  discover.uri是服務地址,http://HDP134:8080是我192.168.209.140的映射

 3>catalog hive.properties的配置

 

  connector.name是連接器,我們就用Hive-cdh5

 4>jvm.config配置

 

  這個可以根據自己的機器配置進行相應調整

 5>log.properties配置

 

  配置完成之后,可以運行presto服務了,前提是要先為hadoop賦值目錄權限,使用如下命令

chown -R hadoop:hadoop /home/presto

  presto服務的啟動方式有兩種,第一種是strat后台運行看不到日志輸出 ,run前台運行,可在前台看到打印日志,建議前期使用run進行前台運行

 

 

  同樣的,要使用hadoop用戶啟動服務

 

  當出現這樣的關鍵詞時,恭喜搭建完成

  接下來可以測試一下,我們使用一個工具presto-cli-0.90-executable.jar 下載之后,重命名為presto-cli

  啟動Hive服務

 

Presto客戶端連接

 

連接Hive庫,並進入如上命令行,可以執行一下show tables;進行測試

 

 

可以顯示出hive的所有表,表示presto連接Hive成功

 今天就先寫到這里,接下來會寫創建一個orcfile的幾種方法,包括從txtfile轉成orcfile,另一種是通過jdbc直接生成orcfile。

以上純屬自己的理解以及本地部署的過程,如果有什么地方有誤敬請諒解!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM