單機安裝hive和presto

  


 

問題:

公司最近在搞presto,主要是分析一下presto和hive的查詢大數據量的性能對比:html

  我先把個人對比圖拿出來(50條數據左右)針對同一條sql(select * from employee where eid = 1203)java

  hive的查詢,下面有時間:4.436snode

  

  presto的查詢: 0.02smysql

  

  

  查詢效率比爲  4.436 / 0.02  ===  2021linux


 

 補充:

  presto是什麼

    Presto是Facebook開發的數據查詢引擎,可對250PB以上的數據進行快速地交互式分析。【百度】web

    個人理解就沒那麼深了。我認爲presto是一個分佈式搜索引擎。爲了加快查詢效率,應對大數據量的查詢而產生的:presto不是傳統意義上的數據庫,sql

  presto產生的目的:

    Presto被設計爲數據倉庫和數據分析產品:數據分析、大規模數據彙集和生成報表。這些工做常常一般被認爲是線上分析處理操做。數據庫

  誰使用Presto:

    Presto是FaceBook開源的一個開源項目。Presto在FaceBook誕生,而且由FaceBook內部工程師和開源社區的工程師公共維護和改進。apache


 

應用: 

     扯了那麼多,你們應該對presto有點簡單的認識了,那就看看怎麼應用吧centos

    既然要對比hive和presto的性能問題,那就要面臨hadoop環境搭建的問題:下面我簡單搭建一下hadoop的單機環境,做爲這次的測試環境,

   準備軟件:連接地址    連接:http://pan.baidu.com/s/1eSaUnYU 密碼:5yrg 

      hadoop-2.6.0.tar

      apache-hive-2.1.1

      presto-server-0.100.tar

      jdk-8u151-linux-x64.tar

   注意:其實還須要準備mysql,可是在centos7中默認是Mariadb   ,和mysql差很少,直接用這個也行

  基本軟件準備好,開始安,安裝我分爲兩部分:

  1.安裝的準備工做(ssh   防火牆,主機名,jdk等配置)

  2.軟件的安裝(mysql,hadoop,hive,presto的安裝配置)

  


  安裝準備工做:

    1>  我是單機測試:因此要把防火牆關閉,防止端口訪問不了的問題

      centos7的命令是:

        systemctl stop firewalld

        systemctl disable firewalld    ---禁止防火強開啓啓動

        setenforce 0    -- 關閉selinux

        修改/etc/selinux/config ,設定 SELINUX=disabled  --測底關閉selinux

    

    2> 建立用戶(無所謂,爲了更正式我寫上了,通常用root權限太大,防止出錯,沒法恢復)

      建立用戶hive,並以/home/hive   做爲全部組件的Home,java例外

    3> ssh的免密登陸(單機無所謂,集羣要分批拷貝到slave機器上)

      確保是在/home/hive目下,執行如下命令

     ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
     cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
     chmod 644 ~/.ssh/authorized_keys
    4>修改hosts文件:
    

                  

    5> jdk的安裝(爲啥要用jdk8會在最後講解錯誤的時候解釋,耐心點,日後看)

      把jdk8放在/usr/local下:解壓便可(因爲我在原有集羣上改的,jdk的名字還保留原來的,只是把解壓後的jdk8的文件放在這個文件夾裏面了,這樣不影響我原來集羣的運行)

         tar -zxvf jdk-8u151-linux-x64.tar.gz 

      

                  

    6>修改/etc/profile   讓環境變量java生效: 執行此命令     source  /etc/profile   (最後也就安裝那麼多東西)

      

 

    至此,安裝前的準備工做已經準備完畢:

 

  


  軟件安裝過程:

      先安裝mysql   |  或者mariaDB(centos默認帶有的。我直接用這個了)

      第一步:

        yum -y install MariaDB-client MariaDB-server MariaDB-devel

      第二步:開啓服務:

         service mysql start 

      第三步:設置密碼:(默認無密碼)

        mysqladmin -u root password ‘888888’

      鏈接數據庫:成功以下:  

        

      關於受權問題我就不扯了。想玩的去找度娘。安裝到這沒問題的話就完成30%了,繼續加油,搞起來!!!!!

    下面安裝hadoopl了(興奮。。。。)

       把hadoop2.6  上傳到/opt下    以下圖:(我把其餘軟件也放在這了,下面就不說了)

      

     1>  解壓hadoop:

     2> 在profile中配置hadoop的HADOOP_HOME  PATH等,而後source  /etc/profile生效

     3> 設置hadoop的一些配置文件  

      先建立一些目錄,在core-site.xml   hdfs-site,xml中配置要使用:

      mkdir  -p  /home/hadoop/hadoop/tmp 
      mkdir -p  /home/hadoop/hadoop/hdfs 
      mkdir -p  /home/hadoop/hadoop/hdfs/data 
      mkdir -p /home/hadoop/ hadoop/hdfs/name

        3.1》進入到hadoop目錄中   進入到    $HADOOP_HOME/etc/hadoop中:

        修改hadoop_env.sh,yarn-env.sh,mapred-env.sh      加上JAVA_HOME的路徑          export JAVA_HOME=/usr/local/jdk1.7.0_79

        3.2》 配置hadoop的四大金剛(core   |   hdfs   |  yarn  |  mapred  ).xml文件

      配置core 

 1 <configuration>
 2 
 3     <property>
 4  <name>fs.defaultFS</name>
 5  <value>hdfs://hive:9001</value>
 6  <description>HDFS的URI,文件系統://namenode標識:端口號,默認是9000</description>
 7 </property>
 8 <property>
 9  <name>hadoop.tmp.dir</name>
10  <value>/home/hadoop/hadoop/tmp</value>
11  <description>namenode上本地的hadoop臨時文件夾</description>
12 </property>
13 <property>
14   <name>ipc.client.connect.max.retries</name>
15   <value>100</value>
16   <description>默認10次,如今配置100次</description>
17 </property>
18 <property>
19   <name>ipc.client.connect.retry.interval</name>
20   <value>10000</value>
21   <description>鏈接間隔1秒鐘,默認是0.1秒</description>
22 </property>
23 </configuration>

    配置hdfs

 1 <property>
 2     <name>dfs.namenode.name.dir</name>
 3     <value>/home/hadoop/hadoop/hdfs/name</value>
 4     <description>namenode上存儲hdfs名字空間元數據 </description>
 5 </property>
 6 <property>
 7     <name> dfs.datanode.data.dir</name>
 8     <value>/home/hadoop/hadoop/hdfs/data</value>
 9     <description>datanode上數據塊的物理存儲位置</description>
10 </property>
11 <property>
12     <name>dfs.replication</name>
13     <value>1</value>
14     <description>副本個數,配置默認是3,應小於datanode機器數量</description>
15 </property>
16 <property>
17  <name>dfs.namenode.rpc-address</name>
18  <value>hive:9001</value>
19  <description>RPC address that handles all clients requests。有人說須要和fs.defaultFS 同樣端口</description>
20 </property>

      配置yarn

  

 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hive:8099</value>
        <description>用於管理集羣的資源,能夠經過瀏覽器訪問 </description>
</property>
<property>
        <name>yarn.nodemanager.webapp.address</name>
        <value>hive:8042</value>
        <description>用於管理節點,能夠經過瀏覽器訪問 </description>
</property>

       配置mapred

  <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

  最後:slaves

    hive

  4>啓動並驗證  

    $HADOOP_HOME/bin/hdfs namenode –format    --這個執行一次便可。

    $HADOOP_HOME/sbin/start-dfs.sh

    $HADOOP_HOME/sbin/start-yarn.sh 

 

    telnet 測試對應端口是否是能鏈接上:

    輸入jps看看服務是否是都能起來:

   

   測試結果:

    

 

 

        

  

  至此hadoop安裝完畢,測試完畢:不錯完成60%

  


 

安裝hive  :

    1>上傳到 /opt上    解壓     在/etc/profile  配置環境變量位置      讓環境變量生效  source /etc/profile

 

    2>  建立一些hive的保存目錄  

       準備hdfs路徑

      hdfs dfs -mkdir -p /warehouse
      hdfs dfs -mkdir -p /tmp/hive
      hdfs dfs -chmod 773 /warehouse
      hdfs dfs -chmod 773 /tmp/hive

    3>  cd $HIVE_HOME/conf下修改hive-env.sh ,hive-site.xml  (若是沒有就用模板修改)

      修改hive-env.sh

      

    修改hive-site.xml

    

    到此。hive安裝完畢:

    注意。網上有的說要進行初始化:$HIVE_HOME/bin/schematool -dbType mysql -initSchema   (但我沒執行這步也ok)【待考證】

  

    啓動 hive

      hive --service metastore

    此時,在hive的安裝目錄任意位置,輸入hive啓動,而後jps    會出現RunJar這個進程

    

 

    說明hive啓動時正常的,側面驗證hive安裝成功: 

  


 

安裝presto       安裝參考

    1》老規矩,上傳到/opt    解壓    配置profile      執行source   /etc/profile  讓變量生效

    2》由於presto中的文件夾啥的本身建立:

      建立目錄

      mkdir -p $PRESTO_HOME/etc/catalog

      mkdir -p /home/hadoop/data_presto/data

      關於etc下的其餘文件和catalog文件夾:不扯淡,上官網解釋

      

      在我機器上的配置以下:

        

      node.properties

        

      config.properties

        

 

      jvm.config

         

 

      log.properties

          

 

    進入catalog文件夾下,配置數據源的信息,我鏈接的是hive,而後就配置個hive.preperties文件便可:

        

 

 

到這,presto的配置也完畢了。

      進入bin目錄下,啓動測試一把:  

      cd $PRESTO_HOME/bin      執行   ./launcher  start   而後進程會出現PrestoServer

 

                     

  

   測試config的路徑鏈接   個人是http:192.168.52.142:8888    成功以下: 會記錄你的presto的每一步操做信息

    

 

 

 至此整個hadoop+hive +presto搭建完畢了!!!!!!!!!!!!!!               


 

 還沒結束:還有一點presto的cli介紹一下:   安裝server是:presto-server-0.100.tar

    下載對應版本的    presto-cli-0.100-executable      否則會報錯的:

      分爲三步:

      1》上傳 j解壓   更名presto-cli: 

      2》改權限   chmod   +x      presto-cli

      3》mv移動到bin目錄下

         4》命令行鏈接:在bin目錄下運行

        ./presto-cli --server hive:8888 --catalog hive --schema default  

       

      

    有人會問,你咋知道鏈接到hive了,那我用hive鏈接一下,驗證一下

 

     

 

 


 

        

  


 

  常見錯誤總結:

    1》錯誤一:

         Error: Defunct property 'task.max-memory' (class [class com.facebook.presto.execution.TaskManagerConfig]) cannot be configured. at com.facebook.presto.server.ServerMainModule.setup(ServerMainModule.java:254)

     這是由於版本不一致形成的,因此我說的是server和cli版本要一致,我用的都是0.100版本:

    2》錯誤二

        鏈接拒絕    refused.    Connected........

      那就是prestoServer的進程沒起來     ./laucher   start這一步失敗,去presto家目錄看看配置文件是否是寫錯了

    3》錯誤三

      

      在config.properties中設置node-scheduler.include-coordinator=true

    4》錯誤四

      jdk 1.8  使用與server 0.86以上版本         0.85如下   jdk 1.7版本(這也是一開始爲啥我把個人jdk7換成8的緣由)

相關文章
相關標籤/搜索