Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建與所有參數解析


廢話就不多說了,直接開始啦~

安裝環境變量:

使用linx下的解壓軟件,解壓找到里面的install 或者 ls 運行這個進行安裝

yum install gcc 

yum install gcc-c++

 

安裝make,這個是自動編譯源碼的工具

yum install make

yum install autoconfautomake libtool cmake

 

封裝了底層的終端功能

yum install ncurses-devel

 

OpenSSL是一個軟件包,用於支持SSL傳輸協議的軟件包

yum install openssl-devel

 

git就不用多說了

yum install git git-svn git-email git-gui gitk

 

安裝protoc(需用root用戶), 作用是把某種數據結構的信息,以某種格式保存起來。主要用於數據存儲、傳輸協議格式等

1 tar -xvf protobuf-2.5.0.tar.bz2 

2 cd protobuf-2.5.0 

3 ./configure --prefix=/opt/protoc/ 

4 make && make install

安裝wget (以后備用~)

sudo yum -y install wget

 

 

二、增加用戶組

groupadd hadoop  添加一個組

useradd hadoop -g hadoop  添加用戶

 

 

三、編譯hadoop

mvn clean package -Pdist,native -DskipTests -Dtar 

編譯完的hadoop在 /home/hadoop/ocdc/hadoop-2.6.0-src/hadoop-dist/target 路徑下

 

 

四、各節點配置hosts文件 vi/etc/hosts

10.1.245.244 master

10.1.245.243 slave1

10.1.245.242 slave2

命令行輸入 hostname master

 

ssh到其他主機 相應輸入 hostName xxxx

 

 

五、各節點免密碼登錄:

 

各節點 免密碼登錄

ssh-keygen -t rsa

cd /root/.ssh/

ssh-copy-id master

將生成的公鑰id_rsa.pub 內容追加到authorized_keys(執行命令:cat id_rsa.pub >> authorized_keys)

 

時間等效性同步

ssh master date; ssh slave1 date;ssh slave2 date;

 

六、hadoop路徑下創建相應目錄(namenode,datenode 等信息存放處)

Mkdir data

(在data路徑下創建目錄)

mkdir yarn

mkdir jn

mkdir current

(hadoop路徑下)

mkdir name

 

(jn目錄下)

mkdir streamcluster

 

 

七、Zookeeper集群配置:

解壓zookeeper

Tar zxvf zookeeper-3.4.6.tar.gz

 

修改temp文件為可用

Cp zoo_sample.cfg  zoo.cfg

 

修改zoo.cfg文件:

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/hadoop/ocdc/zookeeper-3.4.6/data

dataLogDir=/home/hadoop/ocdc/zookeeper-3.4.6/logs

# the port at which the clients will connect

clientPort=2183

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

 

#寫入節點ip與端口

server.1=master:2898:3898

server.2=slave1:2898:3898

server.3=slave2:2898:3898

 

在zookeeper目錄下:

mkdir data

vi myid (寫入id為1,)

拷貝zookeeper到各個目錄下(將slave1中的myid改為2,slave2中的myid改為3....)

隨后在 bin目錄下 逐個啟動zookeeper

./zkServer.sh start

./zkServer.sh status (查看狀態)

 

八、hadoop相關配置文件及參數說明

core-site.xml

默認文件系統的名稱,如果是HA模式,不加端口

<configuration>

<property>

  <name>fs.defaultFS</name>

  <value>hdfs:// streamcluster </value>

 </property>

 

io.file.buffer.size都被用來設置緩存的大小,較大的緩存可以提供高效的數據傳輸,但太大也會造成更大的內存消耗和延遲

<property>

  <name>io.file.buffer.size</name>

  <value>131072</value>

 </property>

 

hadoop文件系統依賴的基本配置,很多配置路徑都依賴它,它的默認位置在/tmp/{$user}下面

<property>

  <name>hadoop.tmp.dir</name>

  <value>/home/hadoop/ocdc/hadoop-2.6.0/tmp</value>

  <description>Abasefor other temporary directories.</description>

 </property>

 

 

 <property>

  <name>hadoop.proxyuser.spark.hosts</name>

  <value>*</value>

 </property>

 

<property>

  <name>hadoop.proxyuser.spark.groups</name>

  <value>*</value>

 </property>

</configuration>

hdfs-site.xml

 

<configuration>

 

集群的邏輯名,要注意的是,如果為HA模式,需要與core-site.xml中的fs.defaultFS名一致

<property>

 <name>dfs.nameservices</name>

    <value>streamcluster</value>

</property>

 

datanode的端口,運行tcp/ip服務器以支持塊傳輸,默認為0.0.0.0:50010

<property>

    <name>dfs.datanode.address</name>

    <value>0.0.0.0:50012</value>

</property>

 

datanode的http服務器地址和端口 

<property>

    <name>dfs.datanode.http.address</name>

    <value>0.0.0.0:50077</value>

</property>

 

datanode的rpc服務器的地址和端口, 提供進程間交互通信

<property>

    <name>dfs.datanode.ipc.address</name>

    <value>0.0.0.0:50022</value>

</property>

 

dfs.ha.namenodes.[nameservice ID]在名稱服務中每一個nameNode的唯一標識符,streamcluster為之前配置的nameservice的名稱,這里配置高可用,所以配置兩個NN

<property>

    <name>dfs.ha.namenodes.streamcluster</name>

    <value>nn1,nn2</value>

</property>

 

由namenode存儲元數據的目錄地址

<property>

    <name>dfs.namenode.name.dir</name>

    <value>/home/hadoop/ocdc/hadoop-2.6.0/name</value>

    <final>true</final>

</property>

 

由datanode存放數據塊的目錄列表

<property>

      <name>dfs.datanode.data.dir</name>

      <value>/home/hadoop/ocdc/hadoop-2.6.0/data</value>

      <final>true</final>

</property>

 

由寫操作所需要創建的最小副本數目

<property>

      <name>dfs.replication</name>

      <value>3</value>

</property>

 

如果是 true,則打開權限系統

<property>

      <name>dfs.permission</name>

      <value>true</value>

</property>

 

設置成true, 通過知道每個block所在磁盤,可以在調度cpu資源時讓不同的cpu讀不同的磁盤,避免查詢內和查詢間的IO競爭

<property>

    <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>

    <value>true</value>

</property>

 

是否在HDFS中開啟權限檢查。

<property>

    <name>dfs.permissions.enabled</name>

    <value>false</value>

</property>

 

HA模式下該參數為streamcluster中namenode1節點對外服務的RPC地址

<property>

    <name>dfs.namenode.rpc-address.streamcluster.nn1</name>

    <value>master:8033</value>

</property>

 

HA模式下該參數為streamcluster中namenode1節點對外服務的RPC地址

<property>

    <name>dfs.namenode.rpc-address.streamcluster.nn2</name>

    <value>slave1:8033</value>

</property>

 

HA模式下該參數為streamcluster中namenode1節點對外服務的HTTP地址

<property>

    <name>dfs.namenode.http-address.streamcluster.nn1</name>

    <value>master:50083</value>

</property>

 

HA模式下該參數為streamcluster中namenode1節點對外服務的HTTP地址

<property>

    <name>dfs.namenode.http-address.streamcluster.nn2</name>

    <value>slave1:50083</value>

</property>

 

設置的為journalNode的地址,Activity狀態中的Namenode會將edits的Log寫入JournalNode,而standby狀態中的Namenode會讀取這些edits log.

<property>

    <name>dfs.namenode.shared.edits.dir</name>

    <value>qjournal://master:8489;slave1:8489;slave2:8489/streamcluster</value>

</property>

 

 JournalNode 所在節點上的一個目錄,用於存放 editlog 和其他狀態信息。

<property>

    <name>dfs.journalnode.edits.dir</name>

    <value>/home/hadoop/ocdc/hadoop-2.6.0/data/jn</value>

</property>

 

journalNode RPC服務地址和端口

<property>

    <name>dfs.journalnode.rpc-address</name>

    <value>0.0.0.0:8489</value>

</property>

 

journalNode HTTP服務地址和端口

<property>

    <name>dfs.journalnode.http-address</name>

    <value>0.0.0.0:8484</value>

</property>

 

此參數為客戶端與activity狀態下的Namenode進行交互的java實現類,DFS客戶端通過該類尋找當前activity的Namenode

<property>

    <name>dfs.client.failover.proxy.provider.streamcluster</name>

  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

 

使HA模式下不會同時出現兩個master,不允許出現兩個activity狀態下的Namenode

<property>

    <name>dfs.ha.fencing.methods</name>

    <value>shell(/bin/true)</value>

</property>

 

SSH的超時時間設置,倘若超過此時間,則認為執行失敗.

<property>

    <name>dfs.ha.fencing.ssh.connect-timeout</name>

    <value>10000</value>

</property>

 

指定streamcluster的兩個NameNode共享edits文件目錄時,使用的JournalNode集群信息

<property>

    <name>dfs.ha.automatic-failover.enabled</name>

    <value>true</value>

</property>

 

每個datanode任一時刻可以打開的文件數量上限。

<property>

    <name>dfs.datanode.max.xcievers</name>

    <value>4096</value>

</property>

 

DataNode傳送數據出入的最大線程數,等同於dfs.datanode.max.xcievers。

<property>

    <name>dfs.datanode.max.transfer.threads</name>

    <value>4096</value>

</property>

 

塊的字節大小

<property>

   <name>dfs.blocksize</name>

   <value>67108864</value>

</property>

 

一般原則是將其設置為集群大小的自然對數乘以20,即20logN, NameNode有一個工作線程池用來處理客戶端的遠程過程調用及集群守護進程的調用。處理程序數量越多意味着要更大的池來處理來自不同DataNode的並發心跳以及客戶端並發的元數據操作。

<property>

    <name>dfs.namenode.handler.count</name>

    <value>20</value>

</property>

 

<!--指定zookeeper地址-->

 <property>

   <name>ha.zookeeper.quorum</name>

   <value>master:2183,slave1:2183,slave2:2183</value>

 </property>

</configuration>

 

 

yarn-site.xml

 

<configuration>

<!-- Site specific YARN configuration properties -->

<!-- Resource Manager Configs -->

 

NodeManager的心跳間隔

<property>

    <name>yarn.resourcemanager.connect.retry-interval.ms</name>

    <value>2000</value>

</property>

 

是否啟用RM HA,默認為false(不啟用)。這里設置為啟用。

<property>

    <name>yarn.resourcemanager.ha.enabled</name>

    <value>true</value>

</property>

 

是否啟用自動故障轉移。默認情況下,在啟用HA時,啟用自動故障轉移。

<property>

    <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>

    <value>true</value>

</property>

 

啟用內置的自動故障轉移。默認情況下,在啟用HA時,啟用內置的自動故障轉移。

<property>

    <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>

    <value>true</value>

</property>

 

集群的ID,確保ResourceManager不會為成為其他集群的Activity活躍狀態。

<property>

    <name>yarn.resourcemanager.cluster-id</name>

    <value>yarn-rm-cluster</value>

</property>

 

HA下兩個ResourceManager的邏輯名稱

<property>

    <name>yarn.resourcemanager.ha.rm-ids</name>

    <value>rm1,rm2</value>

</property>

 

用於標識ResourceManager,這里要注意一點,HA備用的RM的服務器需要修改為rm2

<property>

    <name>yarn.resourcemanager.ha.id</name>

    <value>rm1</value>

</property>

 

啟用重啟ResourceManager的功能,默認為false

<property>

    <name>yarn.resourcemanager.recovery.enabled</name>

    <value>true</value>

</property>

 

用於狀態存儲的類,可以設置為

org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore,基於Hadoop文件系統的實現,這里的設置是基於ZooKeeper的實現

<property>

    <name>yarn.resourcemanager.store.class</name>

    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

</property>

 

存儲RM狀態的ZooKeeper Znode全路徑。

<property>

    <name>yarn.resourcemanager.zk.state-store.address</name>

    <value>master:2183,slave1:2183,slave2:2183</value>

</property>

 

被RM用於狀態存儲的ZooKeeper服務器的主機:端口號

<property>

    <name>yarn.resourcemanager.zk-address</name>

    <value>master:2183,slave1:2183,slave2:2183</value>

</property>

 

Scheduler失聯等待的時間

<property>

    <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>

    <value>5000</value>

</property>

 

ResourceManager1的地址和端口

<property>

    <name>yarn.resourcemanager.address.rm1</name>

    <value>master:23140</value>

</property>

 

ResourceManager1調度器地址:端口

<property>

    <name>yarn.resourcemanager.scheduler.address.rm1</name>

    <value>master:23130</value>

</property>

 

ResourceManager 1對外web ui地址。可通過該地址在瀏覽器中查看集群各類信息。

<property>

    <name>yarn.resourcemanager.webapp.address.rm1</name>

    <value>master:23188</value>

</property>

 

NodeManager通過該地址向ResourceManager1匯報心跳,領取任務等的地址。

<property>

    <name>yarn.resourcemanager.resource-tracker.address.rm1</name>

    <value>master:23125</value>

</property>

 

ResourceManager 1對管理員暴露的訪問地址。管理員通過該地址向RM發送管理命令等。

<property>

    <name>yarn.resourcemanager.admin.address.rm1</name>

    <value>master:23141</value>

</property>

 

<property>

    <name>yarn.resourcemanager.ha.admin.address.rm1</name>

    <value>master:23142</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.address.rm2</name>

    <value>slave1:23140</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.scheduler.address.rm2</name>

    <value> slave1:23130</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.webapp.address.rm2</name>

    <value> slave1:23188</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.resource-tracker.address.rm2</name>

    <value> slave1:23125</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.admin.address.rm2</name>

    <value> slave1:23141</value>

</property>

 

HA ResourceManager2相關參數同上 rm1

<property>

    <name>yarn.resourcemanager.ha.admin.address.rm2</name>

    <value> slave1:23142</value>

</property>

 

<!-- Node Manager Configs -->

localizer IPC

<property>

    <name>yarn.nodemanager.localizer.address</name>

    <value>0.0.0.0:23344</value>

</property>

 

http服務端口

<property>

    <name>yarn.nodemanager.webapp.address</name>

    <value>0.0.0.0:23999</value>

</property>

 

通過該配置,用戶可以自定義一些服務,例如Map-Reduce的shuffle功能就是采用這種方式實現的,可運行mapReduce程序

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

</property>

 

之前定義了為mapreduce_shuffle,那么相對應屬性的類就定義為org.apache.hadoop.mapred.ShuffleHandle

<property>

    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

 

NodeManager會通過參數yarn.nodemanager.local-dirs配置一系列目錄(磁盤),用於存儲Application中間結果(比如MapReduce中Map Task的中間輸出結果)

<property>

    <name>yarn.nodemanager.local-dirs</name>

    <value> /home/hadoop/ocdc/hadoop-2.6.0/data/yarn/local</value>

</property>

 

同上NodeManager配置的日志文件

<property>

    <name>yarn.nodemanager.log-dirs</name>

    <value> /home/hadoop/ocdc/hadoop-2.6.0/data/yarn/log</value>

</property>

 

MapReduce JobHistory Server Web UI地址。

<property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>0.0.0.0:12345</value>

</property>

 

每個節點可用的最大內存,RM中的兩個值不應該超過此值。此數值可以用於計算container最大數目,即:用此值除以RM中的最小容器內存。虛擬內存率,是占task所用內存的百分比,默認值為2.1倍;注意:第一個參數是不可修改的,一旦設置,整個運行過程中不可動態修改,且該值的默認大小是8G,即使計算機內存不足8G也會按着8G內存來使用。

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>2.4</value>

</property>

 

每個節點可用的內存,單位為MB

<property>

   <name>yarn.nodemanager.resource.memory-mb</name>

   <value>16384</value>

  </property>

 

單個任務可申請的最大內存,默認為8192MB

  <property>

    <name>yarn.scheduler.maximum-allocation-mb</name>

    <value>16384</value>

  </property>

 

啟用的資源調度器主類。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。

<property>

<name>yarn.resourcemanager.scheduler.class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>

</property>

 

為applications配置相應的ClassPath

<property>

        <name>yarn.application.classpath</name>

<value>

        $HADOOP_CONF_DIR,

        $HADOOP_COMMON_HOME/share/hadoop/common/*,

        $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,

        $HADOOP_HDFS_HOME/share/hadoop/hdfs/*,

        $HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,

        $HADOOP_YARN_HOME/share/hadoop/yarn/*,

        $HADOOP_YARN_HOME/share/hadoop/yarn/lib/*

</value>

</property>

</configuration>

 

 

mapred-site.xml

 

<configuration>

配置引擎為yarn,如果要配置Tez則改為yarn-tez. 其中的奧妙在於使用了JDK6+的一個特性ServiceLoader類。其為JDK實現了一個依賴注入的機制。

<property>

<name>mapreduce.framework.name</name>

   <value>yarn</value>

 </property>

 

mapreduce.jobhistory.webapp.address和mapreduce.jobhistory.address參數配置的主機上對Hadoop歷史作業情況經行查看。

<property>

  <name>mapreduce.jobhistory.address</name>

  <value>master:10020</value>

 </property>

 

mapreduce.jobhistory.webapp.address和mapreduce.jobhistory.address參數配置的主機上對Hadoop歷史作業情況經行查看。

<property>

  <name>mapreduce.jobhistory.webapp.address</name>

  <value>master:19888</value>

 </property>

 

指定壓縮類型,默認是RECORD類型,它會按單個的record壓縮,如果指定為BLOCK類型,它將一組record壓縮,壓縮效果自然是BLOCK好。

<property>

  <name>mapred.output.compression.type</name>

  <value>BLOCK</value>

</property>

</configuration>

 

 

slaves

vi slaves

 

master1

slave1

slave2

 

隨后將拷貝配置好的hadoop到各個服務器中

 

 

九、啟動Hadoop各組件

在各節點啟動jounalnode

./hadoop-daemon.sh start journalnode

首先在namenode1服務器上進行namenode格式化

./hadoop namenode -format 

 

 格式化后會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,之后通過下面命令,啟動namenode進程在namenode2上執行

sbin/hadoop-daemon.sh start namenode

 

在namenode2上執行,完成主備節點同步信息

./hdfs namenode –bootstrapStandby  

 

格式化ZK(在namenode1上執行即可, 這句命令必須手工打上,否則會報錯)

./hdfs zkfc –formatZK

 

啟動HDFS(在namenode1上執行)

./start-dfs.sh

 

啟動YARN(在namenode1和namenode2上執行)

./start-yarn.sh

 

在namenode1上執行${HADOOP_HOME}/bin/yarn rmadmin -getServiceState rm1查看rm1和rm2分別為active和standby狀態

 

 

我們在啟動hadoop各個節點時,啟動namenode和datanode,這個時候如果datanode的storageID不一樣,那么會導致如下datanode注冊不成功的信息:

這個時候,我們需要修改指定的datanode的current文件中的相應storageID的值,直接把它刪除,這個時候,系統會動態新生成一個storageID,這樣再次啟動時就不會發生錯誤了。

查看端口是否占用

Netstat-tunlp |grep 22

查看所有端口

Netstat -anplut

十、spark搭建與參數解析

修改spark-env..sh 增加如下參數(路徑根據服務器上的路徑修改)

 

HADOOP_CONF_DIR=/home/hadoop/ocdc/hadoop-2.6.0/etc/hadoop/

HADOOP_HOME=/home/hadoop/ocdc/hadoop-2.6.0/

SPARK_HOME=/home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/

 

該參數決定了yarn集群中,最多能夠同時啟動的EXECUTOR的實例個數。

SPARK_EXECUTOR_INSTANCES=3

 

設置每個EXECUTOR能夠使用的CPU core的數量。

SPARK_EXECUTOR_CORES=7

 

該參數設置的是每個EXECUTOR分配的內存的數量

SPARK_EXECUTOR_MEMORY=11G

 

該參數設置的是DRIVER分配的內存的大小

SPARK_DRIVER_MEMORY=11G

 

Spark Application在Yarn中的名字

SPARK_YARN_APP_NAME="asiainfo.Spark-1.6.0"

 

指定在yarn中執行,提交方式為client

MASTER=yarn-cluster

 

 

修改spark-default.conf文件 (路徑根據服務器上的路徑修改)

 

如果沒有適合當前本地性要求的任務可供運行,將跑得慢的任務在空閑計算資源上再度調度的行為,這個參數會引發一些tmp文件被刪除的問題,一般設置為false

spark.speculation        false

 

如果設置為true,前台用jdbc方式連接,顯示的會是亂碼

spark.sql.hive.convertMetastoreParquet  false

 

應用程序上載到HDFS的復制份數

spark.yarn.submit.file.replication 3

 

Spark application master給YARN ResourceManager 發送心跳的時間間隔(ms)

spark.yarn.scheduler.heartbeat.interal-ms  5000

 

僅適用於HashShuffleMananger的實現,同樣是為了解決生成過多文件的問題,采用的方式是在不同批次運行的Map任務之間重用Shuffle輸出文件,也就是說合並的是不同批次的Map任務的輸出數據,但是每個Map任務所需要的文件還是取決於Reduce分區的數量,因此,它並不減少同時打開的輸出文件的數量,因此對內存使用量的減少並沒有幫助。只是HashShuffleManager里的一個折中的解決方案。

spark.shuffle.consolidateFiles  true

 

用來調整cache所占用的內存大小。默認為0.6。如果頻繁發生Full GC,可以考慮降低這個比值,這樣RDD Cache可用的內存空間減少(剩下的部分Cache數據就需要通過Disk Store寫到磁盤上了),會帶來一定的性能損失,但是騰出更多的內存空間用於執行任務,減少Full GC發生的次數,反而可能改善程序運行的整體性能。這要看你的具體業務邏輯,是cache的多還是計算的多。

spark.storage.memoryFraction    0.3

 

一個partition對應着一個task,如果數據量過大,可以調整次參數來減少每個task所需消耗的內存.

spark.sql.shuffle.partitions 800

 

Spark SQL在每次執行次,先把SQL查詢編譯JAVA字節碼。針對執行時間長的SQL查詢或頻繁執行的SQL查詢,此配置能加快查詢速度,因為它產生特殊的字節碼去執行。但是針對很短的查詢,可能會增加開銷,因為它必須先編譯每一個查詢

spark.sql.codegen true

 

 我們都知道shuffle默認情況下的文件數據為map tasks * reduce tasks,通過設置其為true,可以使spark合並shuffle的中間文件為reduce的tasks數目。

spark.shuffle.consolidateFiles true

 

相關jar包的加載地址

spark.driver.extraClassPath /home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.30-bin.jar:/home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar:/home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/lib

/datanucleus-core-3.2.10.jar:/home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar:/home/hadoop/ocdc/spark-1.6.1-bin-hadoop2.6/lib/ojdbc14-10.2.0.3.jar

 

 

 

最終:

 

 

 

 

 

Hadoop監控頁面(根據yarn-site.xml的參數yarn.resourcemanager.webapp.address.rm1中配置的端口決定的):

http://10.1.245.244: 23188

 

Hadoop namenode監控頁面( 根據hdfs-site.xml中配置的參數 dfs.namenode.http-address.streamcluster.nn1中的端口決定):

http://10.1.245.244: 50083

 

 

 

spark thriftserver注冊啟動:

 


免責聲明!

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



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