一、前言
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&characterEncoding=UTF-8&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。
以上純屬自己的理解以及本地部署的過程,如果有什么地方有誤敬請諒解!