spark集群搭建过程

来源:互联网 发布:太阳辐射强度数据 编辑:程序博客网 时间:2024/05/01 09:56

转自:http://blog.csdn.net/dai451954706/article/details/46966165


修改主机名和hosts

[root@localhost ~] hostname master

[root@localhost ~] vi /etc/hostname

#将里面内容改为: master 

[root@localhost ~] vi /etc/hostname

#将下面内容加入

192.168.8.12 master

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

配置秘钥登录

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连接不用输密码就能登录,表示秘钥配置成功

 

要注意文件的权限:

 

配置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

配置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集群已经好了。

配置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/

 

 


原创粉丝点击