首先准备3台电脑或虚拟机,分别是Master,Worker1,Worker2,安装操作系统(本文中使用CentOS7)。

1、配置集群,以下步骤在Master机器上执行

  1.1、关闭防火墙:systemctl stop firewalld.service

  1.2、设置机器ip为静态ip

    1.2.1、修改配置

cd /etc/sysconfig/network-scripts/
vim ifcfg-eno16777736 更改内容如下:
BOOTPROTO=static
#配置静态IP,网关,子网掩码
IPADDR=192.168.232.133
NETMASK=255.255.255.0
GATEWAY=192.168.232.2
#取消networkmanager 管理
NM_CONTROLLED=no ONBOOT=yes

    1.2.2、重启网络服务:systemctl restart network.service

  1.3、设置机器名hostname:hostnamectl set-hostname Master

  1.4、设置/etc/hosts

192.168.232.133    Master
192.168.232.134 Worker1
192.168.232.135 Worker2

  1.5、按以上5个步骤配置Worker1,Worker2

  1.6、测试集群内机器是否可相互ping通:ping Worker1

2、配置ssh免密码登录

  2.1、 配置Master无密码登录所有Worker

    2.1.1、在Master节点上生成密码对,在Master上执行以下命令:
      ssh-keygen -t rsa -P ''
      生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。

    2.1.2、在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    2.1.3、修改ssh配置文件"/etc/ssh/sshd_config"的下列内容:

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

    2.1.4、重启ssh服务,才能使刚才设置有效:service sshd restart

    2.1.5、验证无密码登录本机是否成功:ssh Master

    2.1.6、把公钥复制到所有的Worker机器上。使用scp命令进行复制公钥:

scp /root/.ssh/id_rsa.pub root@Worker1:/root/
scp /root/.ssh/id_rsa.pub root@Worker2:/root/

  2.2、配置Worker1机器
    2.2.1、在"/root/"下创建".ssh"文件夹,如果已经存在就不需要创建了。
      mkdir /root/.ssh

    2.2.2、将Master的公钥追加到Worker1的授权文件"authorized_keys"中去。
      cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

    2.2.3、修改"/etc/ssh/sshd_config",具体步骤参考前面Master设置的第1.3和第1.4。

    2.2.4、用Master使用ssh无密码登录Worker1
      ssh worker1

    2.2.5、删除"/root/"目录下的"id_rsa.pub"文件。
      rm –r /root/id_rsa.pub

    2.2.6、重复上面的5个步骤把Worker2服务器进行相同的配置。

  2.3、 配置所有Worker无密码登录Master

    2.3.1、在Worker1节点上生成密码对,并把自己的公钥追加到"authorized_keys"文件中,执行下面命令:
      ssh-keygen -t rsa -P ''
      cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

    2.3.2、将Worker1节点的公钥"id_rsa.pub"复制到Master节点的"/root/"目录下。
      scp /root/.ssh/id_rsa.pub root@Master:/root/

    2.3.3、在Master节点将Worker1的公钥追加到Master的授权文件"authorized_keys"中去。
      cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

    2.3.4、在Master节点删除"id_rsa.pub"文件。
      rm –r /root/id_rsa.pub

    2.3.5、测试从Worker1免密码登录到Master:ssh Master

  2.4、按照上面的步骤把Worker2和Master之间建立起无密码登录。这样,Master能无密码登录每个Worker,每个Worker也能无密码登录到Master。

3、在Master安装Java、Scala,把下载的安装包解压即可tar -xzvf ...

4、在Master安装配置Hadoop
  4.1、配置hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/etc/hadoop-2.7.5/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/etc/hadoop-2.7.5/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/usr/etc/hadoop-2.7.5/hdfs/namesecondary</value>
</property>
</configuration>

  4.2、配置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>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
</configuration>

  4.3、配置mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

  4.4、配置hadoop-env.sh

export JAVA_HOME=/usr/etc/jdk1..0_161
export HADOOP_HOME=/usr/etc/hadoop-2.7.
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

  4.5、配置core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/etc/hadoop-2.7./tmp</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
</property>
</configuration>

  4.6、配置slaves

Worker1
Worker2

5、在Master安装配置Spark
  5.1、配置spark-env.sh

export JAVA_HOME=/usr/etc/jdk1..0_161
export SCALA_HOME=/usr/etc/scala-2.12.
export HADOOP_HOME=/usr/etc/hadoop-2.7.
export HADOOP_CONF_DIR=/usr/etc/hadoop-2.7./etc/hadoop
export SPARK_MASTER_IP=Master
export SPARK_WORKER_MEMORY=1g
export SPARK_EXECUTOR_MEMORY=1g
export SPARK_DRIVER_MEMORY=500m
export SPARK_WORKER_CORES=
export SPARK_HOME=/usr/etc/spark-2.3.-bin-hadoop2.
export SPARK_DIST_CLASSPATH=$(/usr/etc/hadoop-2.7./bin/hadoop classpath)

5.2、配置spark-defaults.conf

spark.eventLog.enabled true
spark.eventLog.dir hdfs://Master:9000/historyserverforSpark
spark.yarn.historyServer.address Master:
spark.history.fs.logDirectory hdfs://Master:9000/historyserverforSpark
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

5.3、配置slaves

Worker1
Worker2

6、在Master配置环境变量/etc/profile,并通过source /etc/profile使生效

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/etc/jdk1..0_161
export JRE_HOME=/usr/etc/jdk1..0_161/jre
export SCALA_HOME=/usr/etc/scala-2.12. export HADOOP_HOME=/usr/etc/hadoop-2.7.
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib" export SPARK_HOME=/usr/etc/spark-2.3.-bin-hadoop2. export HIVE_HOME=/usr/etc/apache-hive-2.1.-bin export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$SCALA_HOME/lib:$HADOOP_HOME/lib PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$JAVA_HOME/bin:$PATH export JAVA_HOME PATH

7、在Master通过scp命令拷贝java,scala,hadoop,spark,/etc/profile到Worker1,Worker2机器上

8、在Master机器上运行命令:hadoop namenode -format,格式化磁盘

9、在Master机器上运行命令:start-hdfs.sh,启动hdfs服务,可在浏览器通过Master:50070访问

10、在Master机器上运行命令:进入spark的bin目录,start-all.sh,启动Spark,可在浏览器通过Master:8080访问

11、在Master机器上运行命令:start-history-server.sh,启动Spark历史服务,可在浏览器通过Master:18080访问

12、测试集群application运行

12.1、使用spark-submit提交Application:

./spark-submit --class org.apache.spark.examples.SparkPi --master spark://Master:7077 ../examples/jars/spark-examples_2.11-2.3.0.jar 100000
--class:命名空间(包名)+类名;--master:spark集群的master;.jar:jar包位置;10000:任务个数

12.2、启动spark-shell,运行woldcount程序:

sc.textFile("/README.md").flatMap(_.split(" ")).map((_,)).reduceByKey(_+_).map(pair=>(pair._2,pair._1).sortByKey(false,).map(pair=>(pair._2,pair._1)).saveAsTextFile("/resdir/wordcount")

安装配置Spark集群的更多相关文章

  1. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  2. Hadoop2.2集群安装配置-Spark集群安装部署

    配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(19 ...

  3. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  4. 配置spark集群

    配置spark集群 1.配置spark-env.sh [/soft/spark/conf/spark-env.sh] ... export JAVA_HOME=/soft/jdk 2.配置slaves ...

  5. Linux中安装配置hadoop集群

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择 ...

  6. linux上配置spark集群

    环境: linux spark1.6.0 hadoop2.2.0 一.安装scala(每台机器)   1.下载scala-2.11.0.tgz   放在目录: /opt下,tar -zxvf scal ...

  7. hadoop集群环境搭建之安装配置hadoop集群

    在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/  (如果没有这个目录 ...

  8. 架构(三)MongoDB安装配置以及集群搭建

    一 安装 1.1 下载MongoDB 我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况 https://fastdl.mongodb.org/linux/mongodb-li ...

  9. 离线环境下使用二进制方式安装配置Kubernetes集群

    本文环境 Redhat Linux 7.3,操作系统采用的最小安装方式. Kubernetes的版本为 V1.10. Docker版本为18.03.1-ce. etcd 版本为 V3.3.8. 1. ...

随机推荐

  1. go微服务框架go-micro深度学习(四) rpc方法调用过程详解

    上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取server的地 ...

  2. 【nginx&php】后台权限认证方式

    一.最常用的方法(代码中限制) 1.如何限制IP function get_new_ip(){ if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('H ...

  3. Docker入门 - 002 Docker 的简单操作

    系统要求:CentOS 7.2 64 位操作系统. Docker 的简单操作 下载镜像 下载一个官方的 CentOS 镜像到本地 docker pull centos 下载好的镜像就会出现在镜像列表里 ...

  4. Unity应用架构设计(8)——使用ServiceLocator实现对象的注入

    对象的 『注入』 是企业级软件开发经常听到的术语.如果你是一个 Java 程序员,一定对注入有着深刻的映像.不管是SSH框架还是SSM框架,Spring 全家桶永远是绕不过去的弯.通过依赖注入,可以有 ...

  5. 关于java多线程中异常捕获的理解

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  6. spring 整合junit进行测试

    如果想让junit和spring容器环境无缝对接的话,可以使用如下方式: import com.jd.ptest.service.ICronService; import org.junit.Test ...

  7. JavaWeb开发环境配置

    JavaWeb开发环境配置(win7_64bit) 目录 1.概述 2.JavaWeb学习路线 3.JavaWeb常用开发环境搭建 4.注意事项 >>看不清的图片可在新标签打开查看大图 1 ...

  8. mac关闭占用某个端口的进程

    在启动项目的时候有时候会提示端口被占用,但是怎么都找不到那个关闭进程的地方,可以直接通过命令行关闭这个进程: 比如要关闭:8000端口的进程: 1. 查找端口进程: lsof -i: 会把所有的占用8 ...

  9. golang:iconv

    最近在做邮件解析的工作,遇到需要转字符集编码的情况,go官方好像没有提供这样的库,于是从github上找了一下. https://github.com/qiniu/iconv 开发环境: linux ...

  10. 【GMT43智能液晶模块】例程十一:通用定时器实验——定时点亮LED

    实验原理: 通过STM32的一个GPIO口来驱动LED灯,设定GPIO为推挽输出模式,采用灌电流的方式与LED连接, 输出高电平LED灭,输出低电平LED亮,通过通用定时器TIM3实现500ms定时, ...