Spark 集群搭建详细步骤

1修改主机名和hosts

[root@localhost ~] hostname master

[root@localhost ~] vi /etc/hostname

#将里面内容改为: master 

[root@localhost ~] vi /etc/hostname

#将下面内容加入

192.168.8.12 master

#注意:如果要搭建集群,需要将其它的主机名和IP也加进来,并且在每台主机上都要加  

2配置秘钥登录

A添加用户

[root@localhost ~] useradd spark

[root@localhost ~]# passwd spark

B配置秘钥登录

[root@localhost ~]# vi /etc/ssh/sshd_config

#54,55行的注释取消,改为:

RSAAuthentication yes

PubkeyAuthentication yes

[root@master ~]# systemctl restart sshd.service

[root@master ~]# su - spark

[spark@master ~]$ ssh-keygen -t rsa

#一路回车

 

[spark@master ~]$ cd .ssh

[spark@master .ssh]$ cat id_rsa.pub > authorized_keys

如果直接用ssh连接不用输密码就能登录,表示秘钥配置成功

 

要注意文件的权限:

 

3配置JDKScala,环境变量

A.需要的文件列表如下:

 

下载方法:分别到对应的官网,再到下载链接,使用wget下载,具体步骤省略

B.分别解压每个文件,注意:本人将所有的文件放到spark用户的主目录下,即:/home/spark

解压后的目录结构如下:

 

建立相应的软链接(也可以不建软链接,只是为了看着舒服和操作方便)

[spark@master ~]$ ln -s hadoop-2.6.0 hadoop

[spark@master ~]$ ln -s jdk1.7.0_67 jdk

[spark@master ~]$ ln -s scala-2.10.5 scala

[spark@master ~]$ ln -s spark-1.4.0-bin-hadoop2.6 spark

 

C.配置环境变量(root用户)

[root@master ~]# vi /etc/profile

#在文件最后加入

export JAVA_HOME=/home/spark/jdk

export SCALA_HOME=/home/spark/scala

export HADOOP_HOME=/home/spark/hadoop

export SPARK_HOME=/home/spark/spark

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

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

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

 

注意:上面的路径需要根据自己的实际路径做出修改

加载环境变量(spark):

[spark@master ~]$ source /etc/profile

4配置Hadoop

[spark@master ~]$ cd $HADOOP_HOME/etc/hadoop

[spark@master hadoop]$ vi slaves

[spark@master hadoop]$ vi slaves

#slave的主机名加入,每行一个主机名

[spark@master hadoop]$ vi core-site.xml

#将里面的内容改为(简单的配置,具体配置请查阅官方文档)

<configuration>

  <!-- file system properties -->

    <property>

        <name>fs.default.name</name>

        <value>hdfs://master:9000</value>

        <description>The name of the default file system.  A URI whose scheme and authority determine the FileSystem implementation.  The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.

        </description>

    </property>

    <property>

        <name>fs.trash.interval</name>

        <value>360</value>

        <description>Number of minutes between trash checkpoints.If zero, the trash feature is disabled.

        </description>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/tmp/${user.name}</value>

        <description>A base for other temporary directories.</description>

    </property>

</configuration>

[spark@master hadoop]$ vi hdfs-site.xml

#改为

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

        <description>Default block replication.The actual number of replications can be specified when the file iscreated.The default is used if replication is not specified in create time.

        </description>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/hdfs/name</value>

    </property>

 

    <property>

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

        <value>/home/spark/hadoop/hdfs/data</value>

    </property>

   <property>

        <name>dfs.permissions</name>

        <value>false</value>

   </property>

</configuration>

[spark@master hadoop]$ vi yarn-site.xml

#改为

<configuration>

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>master</value>

    </property>

    <property>

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

        <value>mapreduce_shuffle</value>

    </property>

</configuration>

创建对应的目录:

[spark@master hadoop]$ mkdir -p /home/spark/hadoop/hdfs/{data,name}

[spark@master hadoop]$ mkdir /home/spark/hadoop/tmp

 

初始化Namenode

[spark@master hadoop]$ hadoop namenode -format


如图中的status0,说明初始化成功,若为1,则失败,需要检查日志,找到错误原因。

启动Hadoop集群:

[spark@master hadoop]$  $HADOOP_HOME/sbin/start-all.sh

若报如下错误:

 

则需要如下操作:

[spark@master hadoop]$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

#将 export JAVA_HOME=${JAVA_HOME} 

#改为 export JAVA_HOME=/home/spark/jdk   (jdk的具体路径)

再次启动集群:

[spark@master hadoop]$  $HADOOP_HOME/sbin/start-all.sh

得到:

 

使用jps -l查看是否有如上图所示相应的进程。

至此,Hadoop集群已经好了。

5配置Spark

[spark@master hadoop]$ cd $SPARK_HOME/conf

[spark@master conf]$ vi slaves

#Worker主机名加入

master

[spark@master conf]$ cp spark-env.sh.template spark-env.sh

#spark-env.sh Spark进程启动时需要加载的配置

#改模板配置中有选项的具体说明

#此处本人稍微加入了一些配置:

export JAVA_HOME=/home/spark/jdk

export HADOOP_HOME=/home/spark/hadoop

export SPARK_MASTER_IP=master

export SPARK_MASTER_PORT=7077

export SPARK_WORKER_MERMORY=2G

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_DAEMON_JAVA_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/spark/spark/logs -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256m"

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/sparkHistoryLogs -Dspark.yarn.historyServer.address=master:7788 -Dspark.history.fs.updateInterval=10"

 

创建相应目录:

[spark@master conf]$ mkdir /home/spark/spark/{logs,worker}

[spark@master conf]$ hadoop fs -mkdir hdfs://master:9000/sparkHistoryLogs

 

配置spark-defaults.conf,该文件为spark提交任务时默认读取的配置文件

[spark@master conf]$ cp spark-defaults.conf.template spark-defaults.conf

[spark@master conf]$ vi spark-defaults.conf

 

spark.master                     spark://master:7077

spark.eventLog.enabled           true

spark.eventLog.dir               hdfs://master:9000/sparkHistoryLogs

spark.eventLog.compress          true

spark.history.updateInterval     5

spark.history.ui.port            7777

spark.history.fs.logDirectory    hdfs://master:9000/sparkHistoryLogs

启动Spark进程:

[spark@master conf]$ $SPARK_HOME/sbin/start-all.sh

 

启动Spark历史任务记录:

[spark@master conf]$ $SPARK_HOME/sbin/start-history-server.sh

 

SparkHadoop相关的所有进程如下图:

 

至此Spark集群也已经运行起来了。

Spark-shell测试Spark集群:

[spark@master conf]$ $SPARK_HOME/bin/spark-shell --master spark://master:7077

 

 

 

scala> val data=Array(1,2,3,4,5,6,7,8,9,10)

data: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> val pdata = sc.parallelize(data)

pdata: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:23

 

scala> pdata.reduce(_+_)

 

上图展示了运行过程的一些信息,能正确得到结果,说明Spark集群已经OK了。

 

一些web浏览界面:

集群节点信息:http://master:8080

 

历史任务:http://master:7777

 

 

在Spark-Shell中运行测试后,就能看到历史任务了:

 


Hadoop 集群信息: http://192.168.8.12:50070/

 

 



 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值