真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HiveOnSpark

??自從公司使用大數(shù)據(jù)產(chǎn)品之后,就很少碰開源的東西了,集群出問題也是跟研發(fā)溝通,前些天有朋友問我,怎么能把hive底層的引擎換成spark,我想了想,是不是將hive的數(shù)據(jù)庫共享給spark然后用spark-shell不就好了,后來查了查資料,原來不是這樣的,這里面的操作還挺多了。哎,真的是,用了別人產(chǎn)品,開發(fā)是方便了,原理懂的就少了,小編一直還沉浸在用一條SQL底層就能轉(zhuǎn)換的spark程序并行執(zhí)行任務(wù)的幸福生活中。乘著周末,一個(gè)人享受著公司的WiFi和空調(diào),把這個(gè)開源的hive引擎換成spark搞一搞,順便分享給大家,最重要的是死肥宅到技術(shù)宅的轉(zhuǎn)變。
?由于資金有限,只能使用虛擬機(jī)給大家演示,這里小編把自己的搭建的hadoop的平臺環(huán)境介紹一下,先帶大家回顧一下hadoopHA模式下,有哪些進(jìn)程需要啟動(dòng):(hadoop是2.7.x版本的)
?→Namenode:(active-standby):HDFS的主節(jié)點(diǎn),用于元數(shù)據(jù)管理和管理從節(jié)點(diǎn)
?→ Datanode:HDFS的從節(jié)點(diǎn),用于存儲(chǔ)數(shù)據(jù)
?→ ResourceMananger:yarn的主節(jié)點(diǎn),用于資源調(diào)度
?→ Nodemanager:yarn的從節(jié)點(diǎn),用于具體的執(zhí)行任務(wù)
?→ Zookeeper:服務(wù)協(xié)調(diào)(進(jìn)程名QuorumPeerMain)
?→ JournalNode:用于主備namenode的元數(shù)據(jù)的共享
?→ DFSZKFailoverController:監(jiān)控著namenode的生死,時(shí)刻準(zhǔn)備主備切換。
?大概就這么多吧,一個(gè)極為普通的hadoop平臺,小編這里用了3臺虛擬機(jī):
Hive On Spark
每個(gè)節(jié)點(diǎn)上的服務(wù):
hadoop01:
Hive On Spark
hadoop02:
Hive On Spark
hadoop03:
Hive On Spark
?抱怨服務(wù)分配不均勻的小伙伴,停下你們的鍵盤,小編只是演示,匆匆忙忙的搭建的。

創(chuàng)新互聯(lián)是專業(yè)的交口網(wǎng)站建設(shè)公司,交口接單;提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行交口網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

1. 測試hive是否正常運(yùn)行:

這里我在三臺機(jī)器上都分發(fā)了hive的安裝包:Hive On Spark
執(zhí)行命令啟動(dòng)hive:(怎么快怎么來,不用beeline了)

[hadoop@hadoop01 applications]$ hive

Hive On Spark
運(yùn)行幾個(gè)命令試試:

hive> use test;  #進(jìn)入數(shù)據(jù)庫
hive> show tables;  #查看有哪些表
hive> create external table `user`(id string,name string) row format delimited fields terminated by ',' location "/zy/test/user";  #建表
#導(dǎo)入數(shù)據(jù)
[hadoop@hadoop01 ~]$ for i in `seq 100` ;do echo "10$i,zy$i">> user.txt ;done  ;
[hadoop@hadoop01 ~]$ hadoop fs -put user.txt /zy/test/user
hive> select * from `user`; 

OK,hive是沒有問題的!

2. hive引擎換成spark

(1) 版本確認(rèn)

首先查看一下hive和spark版本的兼容:
Hive On Spark
這里小編的spark是2.0.0,hive是2.3.2。
Spark下載地址:https://archive.apache.org/dist/spark/spark-2.0.0/
Hive的下載地址:http://hive.apache.org/downloads.html
這里有spark需要去hive模塊編譯,這里小編將編譯好的spark提供給大家:
鏈接:https://pan.baidu.com/s/1tPu2a34JZgcjKAtJcAh-pQ 提取碼:kqvs
至于hive嘛,官網(wǎng)的就可以

(2) 修改配置文件
#hive配置(hive-site.xml:

    
        javax.jdo.option.ConnectionURL
        jdbc:MySQL://hadoop03:3306/hivedb?createDatabaseIfNotExist=true
        JDBC connect string for a JDBC metastore
        
    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
        Driver class name for a JDBC metastore
    
    
        javax.jdo.option.ConnectionUserName
        root
        username to use against metastore database
    
    
        javax.jdo.option.ConnectionPassword
        123456
        password to use against metastore database
    
    
    
        hive.metastore.warehouse.dir
        /user/hive/warehouse
    
    
    
        hive.execution.engine
        spark
    
    
        hive.enable.spark.execution.engine
        true
    
    
    
        spark.home
        /applications/spark-2.0.0-bin-hadoop2-without-hive
    
    
    
        spark.master
        yarn
    
    
        spark.eventLog.enabled
        true
    
    
        spark.eventLog.dir
        hdfs://zy-hadoop:8020/spark-log
        必須要有這個(gè)目錄
    
    
        spark.executor.memory
        512m
    
    
        spark.driver.memory
        512m
    
    
        spark.serializer
        org.apache.spark.serializer.KryoSerializer
    
    
    
        spark.yarn.jars
        hdfs://zy-hadoop:8020/spark-jars/*
    
    
        hive.spark.client.server.connect.timeout
        300000
    
    
    
        spark.yarn.queue
        default
    
    
        spark.app.name
        zyInceptor
    


這里需要注意的一點(diǎn)是,hadoop是HA模式,所以hdfs的路徑應(yīng)該寫為:
hdfs://cluster_name:8020/path
#spark的配置(spark-env.sh)
#!/usr/bin/env bash
export JAVA_HOME=/applications/jdk1.8.0_73
export SCALA_HOME=/applications/scala-2.11.8
export HADOOP_HOME=/applications/hadoop-2.8.4
export HADOOP_CONF_DIR=/applications/hadoop-2.8.4/etc/hadoop
export HADOOP_YARN_CONF_DIR=/applications/hadoop-2.8.4/etc/hadoop
export SPARK_HOME=/applications/spark-2.0.0-bin-hadoop2-without-hive
export SPARK_WORKER_MEMORY=512m
export SPARK_EXECUTOR_MEMORY=512m
export SPARK_DRIVER_MEMORY=512m
export SPARK_DIST_CLASSPATH=$(/applications/hadoop-2.8.4/bin/hadoop classpath)
(3) jar的配置

① 在hive lib找到以下jar包拷貝到spark jars目錄下:
hive-beeline-2.3.3.jar
hive-cli-2.3.3.jar
hive-exec-2.3.3.jar
hive-jdbc-2.3.3.jar
hive-metastore-2.3.3.jar

[hadoop@hadoop01 lib]$ cp hive-beeline-2.3.2.jar hive-cli-2.3.2.jar hive-exec-2.3.2.jar hive-jdbc-2.3.2.jar hive-metastore-2.3.2.jar  /applications/spark-2.0.0-bin-hadoop2.7/jars/

② 在spark jars中找到以下jar包拷貝到hive lib目錄下:
spark-network-common_2.11-2.0.0.jar
spark-core_2.11-2.0.0.jar
scala-library-2.11.8.jar
chill-java,
chill
jackson-module-paranamer,
jackson-module-scala,
jersey-container-servlet-core
jersey-server,
json4s-ast ,
kryo-shaded,
minlog,
scala-xml,
spark-launcher
spark-network-shuffle,
spark-unsafe ,
xbean-asm5-shaded

[hadoop@hadoop01 jars]$ cp spark-network-common_2.11-2.0.0.jar spark-core_2.11-2.0.0.jar scala-library-2.11.8.jar chill-java-0.8.0.jar chill_2.11-0.8.0.jar jackson-module-paranamer-2.6.5.jar jackson-module-scala_2.11-2.6.5.jar jersey-container-servlet-core-2.22.2.jar jersey-server-2.22.2.jar json4s-ast_2.11-3.2.11.jar kryo-shaded-3.0.3.jar minlog-1.3.0.jar scala-xml_2.11-1.0.2.jar spark-launcher_2.11-2.0.0.jar spark-network-shuffle_2.11-2.0.0.jar spark-unsafe_2.11-2.0.0.jar xbean-asm5-shaded-4.4.jar /applications/hive-2.3.2-bin/lib/

③ 配置文件的分發(fā)
將hadoop中的yarn-site.xml、hdfs-site.xml 放入spark的conf中
將hive-site.xml也放入spark的conf中

④ 分發(fā)jar包
在hive-site.xml配置了:spark.yarn.jars
這里我們先在hdfs中創(chuàng)建這個(gè)目錄:

[hadoop@hadoop01 conf]$ hadoop fs -mkdir /spark-jars

將spark的jars中的所有jar包放入這個(gè)目錄中:

[hadoop@hadoop01 jars]$ hadoop -put ./jars/*.jar /spark-jars

⑤ 啟動(dòng)spark

[hadoop@hadoop01 jars]$ /applications/spark-2.0.0-bin-hadoop2-without-hive/sbin/start-all.sh

此時(shí)這個(gè)節(jié)點(diǎn)中會(huì)出現(xiàn)這幾個(gè)進(jìn)程:
Hive On Spark

(4) 完成以上步驟之后:

測試,在hive中運(yùn)行一個(gè)SQL:
測試,在hive中運(yùn)行一個(gè)SQL:
這里一般使用select count(1) from table;來檢測!
Spark界面會(huì)出現(xiàn):
Hive On Spark
Yarn的界面會(huì)有:
Hive On Spark
出現(xiàn)以上界面,表示hive on spark安裝成功!!

4. 遇到的問題:(版本不兼容)

Hive On Spark
原因:spark中不能含有hive的依賴,去掉-Phive進(jìn)行編譯spark。
解決:編譯spark
下面是hive官網(wǎng)給出的教程:

#Prior to Spark 2.0.0:(他說的是優(yōu)先在spark2.0.0上,其實(shí)就是spark1.6版本的編譯)
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"
#Since Spark 2.0.0:
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
 #Since Spark 2.3.0:
 ./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided,orc-provided"

編譯成功之后,在執(zhí)行前面的內(nèi)容即可。
這里小編也有編譯好之后的spark:
鏈接:https://pan.baidu.com/s/1tPu2a34JZgcjKAtJcAh-pQ 提取碼:kqvs


網(wǎng)站名稱:HiveOnSpark
網(wǎng)站地址:http://weahome.cn/article/geccps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部