Spark On Yarn(HDFS HA)详细配置
######################################################################################################一、服务器分布及相关说明
######################################################################################################
1、服务器角色
服务角色/服务器
172.18.35.29(namenode1)
172.18.35.30(namenode2)
172.18.34.232(datanode1)
172.18.24.136(datanode2)
NameNode
YES
YES
NO
NO
DataNode
NO
NO
YES
YES
JournalNode
YES
YES
YES
NO
ZooKeeper
YES
YES
YES
NO
ZKFC
YES
YES
NO
NO
2、Hadoop(HDFS HA)总体架构
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIvlDSBD-qAAG9vKKqAvE067.jpg
######################################################################################################
二、基础环境部署
######################################################################################################
1、JDK安装
http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz
# tar xvzf jdk-7u45-linux-x64.tar.gz -C/usr/local
# cd /usr/local
# ln -s jdk1.7.0_45 jdk
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
=========================================================================================
2、Scala安装
http://www.scala-lang.org/files/archive/scala-2.10.3.tgz
# tar xvzf scala-2.10.3.tgz -C/usr/local
# cd /usr/local
# ln -s scala-2.10.3 scala
# vim /etc/profile
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin
# source /etc/profile
=========================================================================================
3、SSH免密码登录
可参考文章:
http://blog.csdn.net/codepeak/article/details/14447627
......
=========================================================================================
4、主机名设置
# vim /etc/hosts
172.18.35.29 namenode1
172.18.35.30 namenode2
172.18.34.232 datanode1
172.18.24.136 datanode2
######################################################################################################
三、ZooKeeper集群部署
######################################################################################################
1、ZooKeeper安装
http://apache.dataguru.cn/zookeeper/stable/zookeeper-3.4.5.tar.gz
# tar xvzf zookeeper-3.4.5.tar.gz -C/usr/local
# cd /usr/local
# ln -s zookeeper-3.4.5 zookeeper
# vim /etc/profile
export ZOO_HOME=/usr/local/zookeeper
export ZOO_LOG_DIR=/data/hadoop/zookeeper/logs
export PATH=$PATH:$ZOO_HOME/bin
# source /etc/profile
=========================================================================================
2、ZooKeeper配置与启动
# mkdir -p/data/hadoop/zookeeper/{data,logs}
# vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/hadoop/zookeeper/data
clientPort=2181
server.1=172.18.35.29:2888:3888
server.2=172.18.35.30:2888:3888
server.3=172.18.34.232:2888:3888
在172.18.35.29上执行:
echo 1 > /data/hadoop/zookeeper/data/myid
在172.18.35.30 上执行:
echo 2 > /data/hadoop/zookeeper/data/myid
在172.18.34.232 上执行:
echo 3 > /data/hadoop/zookeeper/data/myid
## 启动ZooKeeper集群
# cd /usr/local/zookeeper && bin/zkServer.sh start
http://s3.运维网.com/wyfs02/M00/12/7A/wKioL1MIvv6i5q7kAACZ4VV5Ezk922.jpg
# ./bin/zkCli.sh -server localhost:2181
http://s3.运维网.com/wyfs02/M01/12/7A/wKioL1MIvzyRnPW4AAShDeH9pxU408.jpg
测试zookeeper集群是否建立成功,如无报错表示集群创建成功
# bin/zkServer.sh status
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIv5zzb9NqAACTecwASew063.jpg
######################################################################################################
四、Hadoop(HDFS HA)集群部署
######################################################################################################
1、hadoop环境安装
Hadoop的源码编译部分可以参考:
http://sofar.blog.运维网.com/353572/1352713
# tar xvzf hadoop-2.2.0.tgz -C/usr/local
# cd /usr/local
# ln -s hadoop-2.2.0 hadoop
# vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PID_DIR=/data/hadoop/pids
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="$HADOOP_OPTS-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# mkdir -p /data/hadoop/{pids,storage}
# mkdir -p/data/hadoop/storage/{hdfs,tmp,journal}
# mkdir -p/data/hadoop/storage/tmp/nodemanager/{local,remote,logs}
# mkdir -p/data/hadoop/storage/hdfs/{name,data}
=========================================================================================
2、core.site.xml配置
# vim/usr/local/hadoop/etc/hadoop/core-site.xml
fs.defaultFS
hdfs://appcluster
io.file.buffer.size
131072
hadoop.tmp.dir
file:/data/hadoop/storage/tmp
ha.zookeeper.quorum
172.18.35.29:2181,172.18.35.30:2181,172.18.34.232:2181
ha.zookeeper.session-timeout.ms
2000
fs.trash.interval
4320
hadoop.http.staticuser.use
root
hadoop.proxyuser.hadoop.hosts
*
hadoop.proxyuser.hadoop.groups
*
hadoop.native.lib
true
=========================================================================================
3、hdfs-site.xml配置
# vim/usr/local/hadoop/etc/hadoop/hdfs-site.xml
dfs.namenode.name.dir
file:/data/hadoop/storage/hdfs/name
dfs.datanode.data.dir
file:/data/hadoop/storage/hdfs/data
dfs.replication
2
dfs.blocksize
67108864
dfs.datanode.du.reserved
53687091200
dfs.webhdfs.enabled
true
dfs.permissions
false
dfs.permissions.enabled
false
dfs.nameservices
appcluster
dfs.ha.namenodes.appcluster
nn1,nn2
dfs.namenode.rpc-address.appcluster.nn1
namenode1:8020
dfs.namenode.rpc-address.appcluster.nn2
namenode2:8020
dfs.namenode.servicerpc-address.appcluster.nn1
namenode1:53310
dfs.namenode.servicerpc-address.appcluster.nn2
namenode2:53310
dfs.namenode.http-address.appcluster.nn1
namenode1:8080
dfs.namenode.http-address.appcluster.nn2
namenode2:8080
dfs.datanode.http.address
0.0.0.0:8080
dfs.namenode.shared.edits.dir
qjournal://namenode1:8485;namenode2:8485;datanode1:8485/appcluster
dfs.client.failover.proxy.provider.appcluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence(root:36000)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_dsa_nn1
dfs.ha.fencing.ssh.connect-timeout
30000
dfs.journalnode.edits.dir
/data/hadoop/storage/hdfs/journal
dfs.ha.automatic-failover.enabled
true
ha.failover-controller.cli-check.rpc-timeout.ms
60000
ipc.client.connect.timeout
60000
dfs.image.transfer.bandwidthPerSec
41943040
dfs.namenode.accesstime.precision
3600000
dfs.datanode.max.transfer.threads
4096
=========================================================================================
4、mapred-site.xml配置
# vim/usr/local/hadoop/etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
namenode1:10020
mapreduce.jobhistory.webapp.address
namenode1:19888
=========================================================================================
5、yarn-site.xml配置
# vim/usr/local/hadoop/etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.scheduler.address
namenode1:8030
yarn.resourcemanager.resource-tracker.address
namenode1:8031
yarn.resourcemanager.address
namenode1:8032
yarn.resourcemanager.admin.address
namenode1:8033
yarn.nodemanager.address
namenode1:8034
yarn.nodemanager.webapp.address
namenode1:80
yarn.resourcemanager.webapp.address
namenode1:80
yarn.nodemanager.local-dirs
${hadoop.tmp.dir}/nodemanager/local
yarn.nodemanager.remote-app-log-dir
${hadoop.tmp.dir}/nodemanager/remote
yarn.nodemanager.log-dirs
${hadoop.tmp.dir}/nodemanager/logs
yarn.nodemanager.log.retain-seconds
604800
yarn.nodemanager.resource.cpu-vcores
16
yarn.nodemanager.resource.memory-mb
50320
yarn.scheduler.minimum-allocation-mb
256
yarn.scheduler.maximum-allocation-mb
40960
yarn.scheduler.minimum-allocation-vcores
1
yarn.scheduler.maximum-allocation-vcores
8
【注意:上面的第68`96行部分,需要根据服务器的硬件配置进行修改】
=========================================================================================
6、配置hadoop-env.sh、mapred-env.sh、yarn-env.sh【在开头添加】
文件路径:
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
/usr/local/hadoop/etc/hadoop/mapred-env.sh
/usr/local/hadoop/etc/hadoop/yarn-env.sh
添加内容:
export JAVA_HOME=/usr/local/jdk
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PID_DIR=/data/hadoop/pids
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="$HADOOP_OPTS-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
=========================================================================================
7、数据节点配置
# vim /usr/local/hadoop/etc/hadoop/slaves
datanode1
datanode2
=========================================================================================
8、集群启动
(1)、在namenode1上执行,创建命名空间
# hdfs zkfc -formatZK
----------------------------------------------------------------------------------------------------------------------------------------------
(2)、在对应的节点上启动日志程序journalnode
# cd /usr/local/hadoop && ./sbin/hadoop-daemon.sh start journalnode
http://s3.运维网.com/wyfs02/M00/12/7A/wKioL1MIwEei5dweAAB3R1vMEIc859.jpg
----------------------------------------------------------------------------------------------------------------------------------------------
(3)、格式化主NameNode节点(namenode1)
# hdfs namenode -format
----------------------------------------------------------------------------------------------------------------------------------------------
(4)、启动主NameNode节点
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start namenode
http://s3.运维网.com/wyfs02/M02/12/7A/wKiom1MIwK6TLVgJAACBbcEggKA655.jpg
----------------------------------------------------------------------------------------------------------------------------------------------
(5)、格式备NameNode节点(namenode2)
# hdfs namenode -bootstrapStandby
----------------------------------------------------------------------------------------------------------------------------------------------
(6)、启动备NameNode节点(namenode2)
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start namenode
----------------------------------------------------------------------------------------------------------------------------------------------
(7)、在两个NameNode节点(namenode1、namenode2)上执行
# cd /usr/local/hadoop && sbin/hadoop-daemon.shstart zkfc
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIwODwBevDAACjb7im8qQ180.jpg
----------------------------------------------------------------------------------------------------------------------------------------------
(8)、启动所有的DataNode节点(datanode1、datanode2)
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start datanode
http://s3.运维网.com/wyfs02/M00/12/7A/wKioL1MIwP6SG-KiAACIBsIvTIk271.jpg
----------------------------------------------------------------------------------------------------------------------------------------------
(9)、启动Yarn(namenode1)
# cd /usr/local/hadoop && sbin/start-yarn.sh
http://s3.运维网.com/wyfs02/M02/12/7A/wKiom1MIwWDjmObIAACgTp2DRFg603.jpg
主NameNode节点上的信息:
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIwYqhl34YAACiqH9LRl4983.jpg
DataNode节点上的信息:
http://s3.运维网.com/wyfs02/M02/12/7A/wKioL1MIwZSRTJUAAAB8zD6pmrw648.jpg
----------------------------------------------------------------------------------------------------------------------------------------------
(10)、测试Yarn是否可用
# hdfs dfs -put/usr/local/hadoop/etc/hadoop/yarn-site.xml /tmp
# hadoop jar/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarwordcount /tmp/yarn-site.xml /mytest
-----------------------------------------------------------------------------------------------------------------------------------------------
(11)、HDFS的HA功能测试
切换前的状态:
http://s3.运维网.com/wyfs02/M00/12/7A/wKioL1MIwdDiElH9AAFrF2rdxYA952.jpg
http://s3.运维网.com/wyfs02/M02/12/7A/wKiom1MIwi2RGtMIAAGc5mTKnYM768.jpg
http://s3.运维网.com/wyfs02/M01/12/7A/wKioL1MIwi7hpwWaAACb0lz9mWU004.jpg
# kill -9 11466
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIwnqT92qZAACF8sBpT3g016.jpg
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start namenode
切换后的状态:
http://s3.运维网.com/wyfs02/M01/12/7A/wKiom1MIwp2y8lv6AAGGDB93OLk752.jpg
http://s3.运维网.com/wyfs02/M00/12/7A/wKioL1MIwpmwp7H3AAGYbtXwEmQ578.jpg
-----------------------------------------------------------------------------------------------------------------------------------------------
(12)、后续维护
HDFS的关闭与启动:
# cd /usr/local/hadoop && sbin/stop-dfs.sh
# cd /usr/local/hadoop && sbin/start-dfs.sh
YARN的关闭与启动:
# cd /usr/local/hadoop && sbin/stop-yarn.sh
# cd /usr/local/hadoop && sbin/start-yarn.sh
【注意】
需要在NameNode节点上执行。
######################################################################################################
五、Spark集群部署
######################################################################################################
1、Spark安装与配置
Spark的源码编译请参考:
http://sofar.blog.运维网.com/353572/1358457
# tar xvzf spark-0.9.0-incubating.tgz -C/usr/local
# cd /usr/local
# ln -s spark-0.9.0-incubating spark
# vim /etc/profile
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
# source /etc/profile
# cd /usr/local/spark/conf
# mkdir -p /data/spark/tmp
----------------------------------------------------------------------------------------------------------------------------------------------
# vim spark-env.sh
export JAVA_HOME=/usr/local/jdk
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
SPARK_LOCAL_DIR="/data/spark/tmp"
SPARK_JAVA_OPTS="-Dspark.storage.blockManagerHeartBeatMs=60000-Dspark.local.dir=$SPARK_LOCAL_DIR -XX:+PrintGCDetails -XX:+PrintGCTi
meStamps -Xloggc:$SPARK_HOME/logs/gc.log -XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFracti
on=60"
----------------------------------------------------------------------------------------------------------------------------------------------
# vim slaves
datanode1
datanode2
# cd /usr/local/spark && sbin/start-all.sh
=========================================================================================
2、相关测试
(1)、本地模式
# bin/run-exampleorg.apache.spark.examples.SparkPi local
----------------------------------------------------------------------------------------------------------------------------------------------
(2)、普通集群模式
# bin/run-exampleorg.apache.spark.examples.SparkPi spark://namenode1:7077
# bin/run-exampleorg.apache.spark.examples.SparkLR spark://namenode1:7077
# bin/run-exampleorg.apache.spark.examples.SparkKMeans spark://namenode1:7077file:/usr/local/spark/data/kmeans_data.txt 2 1
----------------------------------------------------------------------------------------------------------------------------------------------
(3)、结合HDFS的集群模式
# hadoop fs -put README.md .
# MASTER=spark://namenode1:7077bin/spark-shell
scala> val file =sc.textFile("hdfs://namenode1:9000/user/root/README.md")
scala> val count = file.flatMap(line=> line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
scala> count.collect()
scala> :quit
----------------------------------------------------------------------------------------------------------------------------------------------
(4)、基于YARN模式
#SPARK_JAR=assembly/target/scala-2.10/spark-assembly_2.10-0.9.0-incubating-hadoop2.2.0.jar\
bin/spark-classorg.apache.spark.deploy.yarn.Client \
--jarexamples/target/scala-2.10/spark-examples_2.10-assembly-0.9.0-incubating.jar \
--classorg.apache.spark.examples.SparkPi \
--args yarn-standalone \
--num-workers 3 \
--master-memory 4g \
--worker-memory 2g \
--worker-cores 1
----------------------------------------------------------------------------------------------------------------------------------------------
(5)、最终的目录结构及相关配置
目录结构:
http://s3.运维网.com/wyfs02/M01/12/7A/wKioL1MIw0Dzp_dHAAMdxJzQ7Lg319.jpg
配置文件“/etc/profile”中的环境变量设置:
http://s3.运维网.com/wyfs02/M00/12/7A/wKiom1MIw5Si87QkAAKdKXz4xxE592.jpg
页:
[1]