91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spark HA的部署方案

發布時間:2021-09-15 17:23:31 來源:億速云 閱讀:171 作者:chen 欄目:云計算

本篇內容主要講解“Spark HA的部署方案”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spark HA的部署方案”吧!

目錄

一、 準備服務器環境

1.1、服務器規劃

1.2、軟件版本

二、安裝ZooKeeper Cluster

三、安裝Hadoop2 HA Cluster

四、安裝HBase HA Cluster

五、安裝Spark HA Cluster步驟

5.1、初始化配置

5.2、安裝Spark

5.3配置環境變量(需要切換Root命令執行,執行完畢后一定記著切換到普通用戶)

5.3.1修改系統環境變量(追加)

5.3.2修改spark的環境變量

5.3.3修改從節點

5.4安裝其他集群機器

5.5啟動spark

5.6啟動HA方式

5.7檢查是否啟動 

5.8發布停止Dirver

5.9、啟動關閉Driver的歷史監控

5.10、hive on Spark配置

六、相關參數說明

***********************************************************************************

一、準備服務器環境

1.1、服務器規劃

ZooKeeper Cluster
HostIP
zookeeper1192.168.50.228
zookeeper2192.168.50.229
zookeeper3192.168.50.230
Spark HA Cluster


HOSTIPMasterWorker
nn1192.168.50.221YN
nn2192.168.50.222YN
dn1192.168.50.225NY
dn2192.168.50.226NY
dn3192.168.50.227NY

1.2、軟件版本

Linux: CentOS2.6.32-431.el6.x86_64

Hadoop:2.6.0

ZooKeeper:3.4.6

JDK/JRE: 1.7.0_75 (64bit)

spark-1.3.0-bin-hadoop2.4

二、安裝ZooKeeper Cluster參考《Zookeeper部署文檔_V1.0》

Spark依賴ZooKeeper做選舉,故需要先部署ZooKeeper

三、安裝Hadoop2 HA Cluster參考《Hadoop2 HA集群部署V1.0》

Spark獨立模式,可以不使用HDFS,如果有yarn的集群分發則需要部署

四、安裝HBase HA Cluster參考《HBase HA部署文檔V1.0》

Spark如果不存儲數據到HBase,可以不做部署

5.1、初始化配置

1、修改主機名稱第一步臨時修改

#hostname     nn1

第二步修改永久修改,防止下次重啟后被重置

修改/etc/sysconfig/network中的hostname

NETWORKING=yes

HOSTNAME= nn1

第三步做DNS映射,可以直接訪問主機名則訪問的部本機IP地址

修改/etc/hosts文件

在最后增加一行,如

192.168.50.221    nn1

第四步重啟電腦

重啟后,ping nn1

如果能ping成功則配置完成

其他機器依次配置即可

2、關閉防火墻命令:service iptables stop

同時關閉防火墻自啟動服務:chkconfig iptables off

查看是否關閉了自啟動:chkconfig --list | grep iptables ,如果全部是off則表示都關閉了

查看狀態:service iptables status

# service iptables status

Firewall is stopped.

3、創建應用帳戶和組(可選,建議新建一個專門的用戶)

為了系統安全建議每個對外應用都創建單獨的帳戶和組,具體創建方法請網上搜索。

#新建組

[root@nn2  ~]# groupadd  bdata

#添加用戶和分組

[root@nn2  ~]# useradd -g bdata bdata

#設置密碼

[root@nn2  ~]# passwd bdata

Changing password for user bdata.

New password:

BAD PASSWORD: it does not contain enough DIFFERENT characters

BAD PASSWORD: is a palindrome

Retype new password:

passwd: all authentication tokens updated successfully.

4、設置ssh

修改/etc/ssh/sshd_config root帳戶修改

#vim /etc/ssh/sshd_config

取消如下注釋

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

修改后,重啟ssh: service sshd restart

切換到普通用戶下進行設置

生成SSH通訊密鑰,有這個證書后,hadoop啟動時就可以免密碼登錄了

a、先在每臺機器上面執行ssh-keygen -t rsa -P "",密碼都為空,主要是每次hadoop啟動時需要認證,如果有密碼每次都需要輸入,實在麻煩,所以密碼留空,回車即可,執行后,將產生兩個文件,位于~/.ssh文件夾中

b、然后相互執行 ssh-copy-id userName@machineName,此功能可以快速把自己的公鑰發給對方,并自動追加

[root@nn1  ~]# ssh nn1

進入后,exit退出SSH即可

這里注意,有時候還是需要你輸入密碼,這里有可能是authorized_keys的權限問題,我們進一步設置權限,chmod 600 authorized_keys即可

如果對于其他計算機則需要把你的公鑰發送給對方,你就可以無密碼登錄了,認證了

5、安裝JDK/JRE

Spark是使用Scala語言開發的軟件,所以必須要安裝JRE或JDK才可以運行,為了測試方便建議安裝JDK(生產環境安裝JRE即可),JDK安裝步驟(略)

5.2、安裝Spark下載地址:

http://mirrors.cnnic.cn/apache/spark/spark-1.3.0/spark-1.3.0-bin-hadoop2.4.tgz

由于spark基于scale寫的,故需要scale庫

下載地址:

http://downloads.typesafe.com/scala/2.10.5/scala-2.10.5.tgz?_ga=1.126203213.1556481652.1427182777

5.3、配置環境變量(需要切換Root命令執行,執行完畢后一定記著切換到普通用戶)

5.3.1、修改系統環境變量(追加)

#vim /etc/profile

export JAVA_HOME=/home/utoken/software/jdk1.7.0_75

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export SCALA_HOME=/home/utoken/software/scala-2.10.5

export SPARK_HOME=/home/utoken/software/spark-1.3.0-bin-hadoop2.4

export PATH=$PATH:$JAVA_HOME/bin: $SCALA_HOME/bin:$SPARK_HOME/bin

5.3.2、修改spark的環境變量

5.3.2.1、修改Spark的環境變量配置文件

#vim spark-env.sh

#導入spark運行的環境變量

export JAVA_HOME=/home/utoken/software/jdk1.7.0_75

#關于這里為什么需要配置環境變量的解釋:雖然我們在所有機器都配置了環境變量(~/.bash_profile),但start-all.sh是通過ssh登錄slave機器,然后啟動spark worker進程的,所以~/.base_profile必須是用戶登錄后才會執行,ssh登錄是non-login登錄不會觸發.base_profile的執行,所以啟動時worker機器會找不到JAVA_HOME,解決辦法:把環境變更在復制一份到.baserc配置中,這個環境變量是在啟動shell腳本時執行的

#如果是多Master的情況下,不能定義Spark_Master_IP的屬性,否則無法啟動多個Master,這個屬性的定義可以在Application中定義

#export SPARK_MASTER_IP=nn1

#指定每個Worker需要的內存大小(全局)

export SPARK_WORKER_MEMORY=5g

#Spark的一直執行任務的文件

export SPARK_WORK_DIR=/home/utoken/datadir/spark/work

#Spark進行shuffle等的一些小文件,臨時文件,可以觀察打開的句柄數

export SPARK_LOCAL_DIRS=/home/utoken/datadir/spark/tmp

#采用Zookeeper保證HA,導入相應的環境變量

export SPARK_DAEMON_JAVA_OPTS="-Dsun.io.serialization.extendedDebugInfo=true -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 -Dspark.deploy.zookeeper.dir=/spark"

或者采用另一種導入方式

#指定Spark恢復模式,這里采用Zookeeper模式,默認為NONE

export  -Dspark.deploy.recoveryMode=ZOOKEEPER

export  -Dspark.deploy.zookeeper.url=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181

export  -Dspark.deploy.zookeeper.dir=/spark

選項:

spark.deploy.recoveryMode       NONE   恢復模式(Master重新啟動的模式),有三種:1, ZooKeeper, 2, FileSystem, 3 NONE

spark.deploy.zookeeper.url  ZooKeeper的Server地址

spark.deploy.zookeeper.dir  /spark ZooKeeper 保存集群元數據信息的文件目錄,包括Worker,Driver和Application。

#下面是結合Spark On Yarn方式的集群模式需要配置的,獨立集群模式不需要配置

export HADOOP_HOME=/home/utoken/software/hadoop-2.5.2

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/Hadoop

5.3.2.2、修改Spark針對每個Driver應用程序的全局配置

#vim spark-defaults.conf(針對每個Driver有效)

spark-defaults.conf文件說明

影響范圍:編輯driver所在機器上的spark-defaults.conf,該文件會影響到driver所提交運行的application,及專門為該application提供計算資源的executor的啟動參數。因此只需要在driver所在的機器上編輯該文件,不需要在worker或master所運行的機器上編輯該文件。

          配置舉例:

spark.executor.extraJavaOptions    -XX:MaxPermSize=1000m

spark.executor.memory   1g

spark.serializer org.apache.spark.serializer.KryoSerializer

spark.cores.max  32

spark.shuffle.manager   SORT

spark.driver.memory  2g

spark.shuffle.consolidateFiles true

詳細說明:

spark.executor.extraJavaOptions 設置擴展Java選項,這里指定永久帶最大內存1000m

spark.executor.memory  指定該application提供計算資源的executor啟動時, heap memory需要有1g(占用的Worker內存),默認512m

spark.serializer    指定采用序列化的類,這里采用org.apache.spark.serializer.KryoSerializer

spark.cores.max         指定每個Driver運行的最大核心數,這里指定3G,默認系統擁有的所有核心數

spark.shuffle.manager    指定在shuffle的時候,采用的管理方式,這里指定SORT方式,進行排序可以減少臨時文件的產生,但是性能稍微有些消耗

spark.driver.memory       指定Driver自身占用的內存大小,這里2G

以上屬性也可以單獨在SparkConf中進行配置,并根據每個機器性能進行優化指定

spark.shuffle.consolidateFiles 指定合并小文件,在map的時候會有很多小文件,在reduce后,其實只有一個結果,而小文件會留下,設置下面的就是在map后的小文件合并成一個文件了

關于Spark屬性的優先權為:SparkConf方式 > 命令行參數方式 >文件配置方式

5.3.3、修改從節點

#vim slaves

dn1

dn2

dn3

5.4、安裝其他集群機器

 Scala快速分發:

scp -r /home/utoken/software/scala-2.10.5 utoken@dn1:/home/utoken/software/

spark快速分發:

scp -r spark-1.3.0-bin-hadoop2.4 utoken@dn1:/home/utoken/software/

5.5、啟動/關閉spark啟動和關閉集群

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/start-all.sh

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/stop-all.sh

單獨啟動和關閉Master

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/start-master.sh

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/stop-master.sh

單獨啟動Slaves

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/start-slaves.sh

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/stop-slaves.sh

單獨啟動Slaves中的某個Worker,同時指定端口(不存在端口沖突的情況下不需要指定)

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$./bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077

指定某個端口

-webui-port 8082

5.6、啟動HA方式第一步,啟動整個集群:

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/start-all.sh

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ ./sbin/stop-all.sh

第二步,啟動Standby,Spark

[utoken@nn2 spark-1.3.0-bin-hadoop2.4]$ ./sbin/start-master.sh

[utoken@nn2 spark-1.3.0-bin-hadoop2.4]$ ./sbin/stop-master.sh

5.7、檢查是否啟動主節點

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ jps

31246 Master

Slaves節點

[utoken@dn2 software]$ jps

7734 Worker

5.8、發布/停止Driver應用5.8.1、發布應用命令:

./bin/spark-submit \

  --class <main-class>

  --master <master-url> \

  --deploy-mode <deploy-mode> \

  --conf <key>=<value> \

  ... # other options

  <application-jar> \

  [application-arguments]

參數說明:

--class指定你需要執行的主類,

如--class com.pride.market.spark.streaming.Bootstrap

--master指定master地址,如:spark://nn1:7077

--deploy-mode 指定Driver運行的模式,默認是Client方式,有如下兩個選項:client、cluster

--supervise       失敗后是否重啟Driver,僅限于Spark StandAlong模式

--jar 表示你的應用程序的依賴包,多個依賴包逗號分割即可

application-jar表示你的應用程序的jar包,該jar包必須在所有節點都可見,你可以上傳到HDFS文件系統中,采用hdfs://......jar方式,特別是采用cluster模式,就必須全局可見;如果采用的是client,只需要在命令最后跟上jar即可自動上傳到各個worker節點上去

application-arguments表示你的主類需要傳遞的參數main(args),

如果需要查看配置選項是從哪里來的,可以用打開--verbose選項來生成更詳細的運行信息以做參考

5.8.2、停止任務(Application/Driver)

1、Client方式發布的應用停止方式:

[utoken@nn1 ~]$ jps

18376 SparkSubmit

[utoken@nn1 ~]$kill -9 18376

2、Cluster模式發布的應用停止方式:

./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>

其中Master URL表示集群Master地址,如spark://nn1:7077

Driver ID需要通過Master的8080端口查看,地址:http://nn1:8080

在Running Drivers中找到這里的Submission ID。

如:

[utoken@nn2 sbin]$ spark-class org.apache.spark.deploy.Client kill spark://nn1:7077 driver-20150505151651-0014

查看yarn任務列表

#yarn application -list

[bdata@nn1 ~]$ yarn application -kill applicationId

詳細發布命令及示例可見官網地址:

http://spark.apache.org/docs/latest/submitting-applications.html

5.9、啟動/關閉Driver的歷史監控

每一個SparkContext啟動一個web UI,默認情況下在端口4040, 顯示關于應用程序的有用信息,包括:

調度器階段和任務的列表

RDD大小和內存使用的概覽

環境信息。

關于運行中執行器的信息

5.9.1、修改spark-default.conf配置(如果沒有做下配置,日志將不會持久化,一旦運行完畢后,無法查看日志情況)

在最后增加如下選項

#是否啟用事件日志記錄,這里啟用

spark.eventLog.enabled  true

#Driver任務運行的日志生成目錄

spark.eventLog.dir      hdfs://dfscluster/sparktst/eventslog

#監控頁面需要監控的目錄,需要先啟用和指定事件日志目錄,配合上面兩項使用

spark.history.fs.logDirectory   hdfs://dfscluster/sparktst/eventslog

特殊說明:hdfs://dfscluster/sparktst/eventslog,該目錄為HDFS的目錄,請提前創建好,同時這里用到了HADOOP HA模式的集群名稱dfscluster,所以我們需要把HADOOP的配置文件hdfs-site.xml復制到Spark的conf目錄下,這樣就不會報集群名字dfscluster找不到的問題,詳見問題12

更為詳細的文檔請查看官方文檔:

http://spark.apache.org/docs/latest/monitoring.html

5.9.2、啟動/關閉歷史記錄服務

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ sbin/start-history-server.sh

[utoken@nn1 spark-1.3.0-bin-hadoop2.4]$ sbin/stop-history-server.sh

5.10、hive on spark的配置

5.10.1、根據《Hive安裝配置》文檔,進行Hive的安裝配置

5.10.2、復制Hive的配置文件hive-site.xml到Spark的配置目錄conf下,然后分發到Spark的整個集群

[bdata@bdata4 hadoop]$ for i in {34,35,36,37,38};do scp hive-site.xml 192.168.10.$i:/u01/spark-1.5.1/conf/ ; done

5.10.3、啟動整個集群,即可

5.10.4、測試

#采用集群方式啟動spark-shell

[bdata@bdata4 sbin]$ spark-shell --master spark://bdata4:7077

#構建hiveContext

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

16/01/13 17:30:30 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

sqlContext: org.apache.spark.sql.hive.HiveContext = org.apache.spark.sql.hive.HiveContext@2f6c736

#進行sql的查詢操作,這里的表YHJHK_IY02,是提前在hive中創建好的,并已經加載了數據,故這里可以直接查詢

scala> sqlContext.sql("select * from YHJHK_IY02 where AAC002 = '510922197303151981'").collect().foreach(println) 

數據略

其他啟動方式

直接基于spark-sql方式啟動

[bdata@bdata4 sbin]$./spark-sql --master spark://bdata4:7077

基于YARN模式啟動,與Hive整合只支持yarn-client模式,不支持yarn-cluster

[bdata@bdata4 sbin]$./spark-sql --master yarn-client

上面兩種方式都可以指定執行參數,如后面跟參數(注意有些參數在各個集群下生效情況是不一樣的哈)

--driver-memory 1G --driver-cores 2 --executor-memory 4G 或者 --driver-memory 1G --driver-cores 2 --executor-cores 4 --num-executors 8 --executor-memory 4G

注意:如果發布任務的總內存超過了物理機器的總內存,該任務將不會執行,因此,一定注意核算集群的內存總大小剩余,于系統核心數無關

六、相關參數說明

詳見官網配置表:

http://spark.apache.org/docs/latest/configuration.html

Driver Application設置(該內容也可以設置在spark-default.conf):

#允許通許的消息大小,由于默認消息太小導致通訊失敗,故可以設置更大的值(該值表示Spark使用AKKA框架中的Actor通信消息的最大容量(如任務task的輸出結果,因為整個spark集群的消息傳遞都是通過Actor進行的,默認10M,在處理大規模數據時,可以調整該值))

spark.akka.frameSize=10

#分區數量(可理解為并行線程數),建議設置成內核數的2-3倍

spark.default.parallelism=9

#是否自動清除不需要再次使用的RDD(優化內存存儲)

spark.streaming.unpersist=true

#是否將多個suffle小文件合并成一個大文件(優化磁盤存儲)

spark.shuffle.consolidateFiles=true

#把指定毫秒內接受到的流數據放入一個block文件中(優化磁盤存儲)

spark.streaming.blockInterval=1000

#spark存儲模式設為序列化存儲是才生效,序列化類

spark.serializer=org.apache.spark.serializer.KryoSerializer

spark-env.conf

# -SPARK_EXECUTOR_INSTANCES, Number of workers to start (Default: 2)

# -SPARK_EXECUTOR_CORES, Number of cores for the workers (Default: 1).

# -SPARK_WORKER_CORES, to set the number of cores to use on this machine

# -SPARK_WORKER_INSTANCES, to set the number of worker processes per node

性能優化

1、spark中有兩個性能優化比較重要的指標,數據壓縮和序列化

數據壓縮:

工具:目前一般采用LZF和Snappy兩種方式,LZF壓縮比高,Snappy壓縮時間花費長

配置:

spark-env.sh

export SPARK_JAVA_OPTS="-Dspark.broadcast.compress"

程序配置:conf.set("spark.broadcast.compress",true)

配置壓縮方式:spark.io.compression.codec

序列化:

目的:進程間通訊、數據持久化到磁盤

工具:Java自身序列化和Kyro序列化,Kyro擁有緊湊、快速、輕量、擴展性好、自定義強等有點

發布到yarn上面的應用需要設置的幾個特殊參數

--num-executors  控制為這個應用分配多少個Executor , 僅限于Spark on Yarn模式

--executor-memory  控制應用被分配到的每個Executor的內存大小,默認1G 支持Spark standalone、Yarn、Mesos

--executor-cores 控制應用被分配到的每個Executor的CPU核心數量

通過上面這些參數可以限制用戶提交的應用不會過多的占用系統資源

其他

--supervise 失敗后是否重啟Driver,僅限于Spark  standalone模式

--driver-cores NUM Driver程序的使用CPU個數,僅限于Spark standalone模式

--total-executor-cores NUM executor使用的總核數,僅限于Spark standalone、Spark on Mesos模式

2、lineage(血統)

Narrow依賴:一個父分區對應一個子分區或多個父分區只對應一個子分區

Wide依賴:一個父分區對應多個子分區或多個父分區對應多個子分區

這里我們優先選擇使用Narrow Dependency,向上會查重算性能消耗比較低,而Wide方式會出現計算過度,由于依賴的父子分區較多,鏈條復雜,故計算消耗的性能也比較多,同時由于需要通過父分區重算數據,那么也會重新計算已經計算過未丟失的子分區數據,所以導致大量冗余數據重算開銷。

3、Checkpoint

用于設置檢查點數據的存儲,進而將數據存儲備份,是對lineage做容錯的輔助,lineage過長會導致容錯成本過高,那么我們可以使用檢查點方式進行數據恢復,在中間結果進行檢查點容錯,若出現分區丟失,可以直接通過檢查點還原了,在做檢查點時,記住需要對數據進行一個Cache,也就是最好是內存中已經緩存的RDD,否則會造成重新計算問題,消耗性能。

4、Shuffle

本意為洗牌、混洗,把一組有一定規則的數據進行打散重新組合轉換為一組無規則隨機數據分區。而在Spark中Shuffle則表示把一組無規則的數據盡量轉換成一組具有一定規則的數據,和它本意正好相反。

5、減少重復Jar包復制分發

由于spark每次提交任務的時候,都會把相應的jar包提交到任務所在的機器中,這樣同一個任務多次提交后,會出現jar包重復提交占用磁盤空間,為了減少jar包重復提交,我們需要把應用任務需要使用到的jar包上傳到HDFS中,進行地址引用即可,這樣就不會出現每次發布任務都上次一次jar包的情況了,達到了多次提交都引用同一個地址的jar包目的,減少了系統磁盤的占用。

6、監控java虛擬機(Linux)的性能

推薦采用:yourkit,一個比較友好的Java Profile工具

特殊說明(Spark、Flink):

1、流式計算:Flink、Storm支持毫秒級計算。Spark目前(V1.5.1)只支持秒級計算,并可運行在100個節點以上的集群。Storm目前最小的延遲是100ms左右。

Flink是一行一行處理,而Spark是基于數據片集合(RDD)進行小批量處理,所以Spark在流式處理方面,不可避免增加一些延時。

2、HADOOP兼容:Flink對Hadoop有著更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是現在只支持老版本的MapReduce方法,新版本的MapReduce方法無法得到支持,Spark則不支持TableMapper和TableReducer這些方法。

3、SQL支持:Spark對SQL的支持比Flink支持的范圍要大一些,另外Spark支持對SQL的優化,而Flink支持主要是對API級的優化。

4、Flink支持自動優化迭代式計算

5、Spark后續優勢Spark SQL

6、Spark Streaming的Lineage容錯方式,數據都是多分冗余容錯的,如果數據來至與HDFS,那么默認一般HDFS是三份備份,如果數據來自于網絡,那么它會對每一個數據流復制兩份到其他的機器,冗余容錯。

到此,相信大家對“Spark HA的部署方案”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平江县| 台中市| 万全县| 临清市| 衡阳县| 东辽县| 错那县| 三穗县| 铁岭县| 龙海市| 阿勒泰市| 饶平县| 旬阳县| 湾仔区| 门源| 新巴尔虎左旗| 库伦旗| 拜泉县| 行唐县| 天镇县| 淳化县| 洛浦县| 舟曲县| 惠来县| 万载县| 广灵县| 岚皋县| 尚志市| 定西市| 东至县| 麟游县| 安丘市| 东平县| 静宁县| 灵璧县| 万山特区| 余江县| 开远市| 哈尔滨市| 浦北县| 维西|