Spark分布式环境搭建

Spark分布式环境搭建

 

1.   准备

      Scala安装包:scala-2.11.7.tgz

      SPARK安装包:spark-1.1.0-bin-hadoop2.4.tar.gz

2.   说明

默认已安装了hadoop环境,jdk,配置了免密码登录,设置了主机名。我们一共有三台机器,分别为:hadoop1hadoop2hadoop3。其中hadoop1hadoop集群的master,其他两台是slaveSpark也装3台,其中hadoop1master其余为worker

3.   Scala安装

在主节点hadoop1中做一下操作(如果没有说明所有操作都是在主节点)

创建目录,并切换到该目录

cd /home/hadoop/scala

解压scala

tar –zxvf scala-2.11.7.tgz

scala添加到环境变量

vi /etc/profile

添加一下内容:

export SCALA_HOME=/home/hadoop/scala/scala-2.11.7

修改PATH

export PATH=$PATH:$SCALA_HOME/bin

保存退出,使其生效

source /etc/profile

查看是否安装成功

scala –version

复制安装包到两个从节点(hadoop2hadoop3

scp /home/hadoop/scala/scala-2.11.7 root@hadoop2:/ /home/hadoop/scala

scp /home/hadoop/scala/scala-2.11.7 root@hadoop3:/ /home/hadoop/scala

按主节点的方式配置(hadoop2hadoop3)scala环境变量

4.   Spark安装

创建目录

mkdir /home/hadoop/spark

cd /home/hadoop/spark

解压spark文件

tar –zxvf spark-1.1.0-bin-hadoop2.4.tar.gz

设置spark环境变量

vi /etc/profile

添加如下内容

export SPARK_HOME=/home/hadoop/spark/spark-1.1.0-bin-hadoop2.4

修改PATH

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

使修改生效

source /etc/profile

修改spark配置文件spark-env.sh

cd $SPARK_HOME/conf

cp spark-env.sh.template spark-env.sh

vi spark-env.sh

添加以下内容

#jdk安装目录

export JAVA_HOME=/home/hadoop/java/jdk1.7.0_71

#scala安装目录

export SCALA_HOME=/home/hadoop/scala/scala-2.11.7

#spark集群的master节点的ip

export SPARK_MASTER_IP=192.168.0.2

#指定的worker节点能够最大分配给Excutors的内存大小

export SPARK_WORKER_MEMORY=1g

#hadoop集群的配置文件目录

export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.5.2/etc/hadoop

 

修改conf目录下面的slaves文件

vi slaves

添加一下内容

hadoop1

hadoop2

hadoop3

保存退出后对从节点(hadoop2hadoop3)做同样的设置

5.   Spark启动

master主机${SPARK_HOME}/bin目录下运行start-all.sh启动集群

访问http://hadoop1:8080查看节点情况(默认是8080端口,如果不想使用8080端口,需要在spark-env.sh里面配置SPARK_MASTER_WEBUI_PORT来指定端口号)

Spark默认地址为:spark://masterIP:7077

 

6.   Spark-shell使用

cd $SPARK_HOME/bin

启动spark-shell

./spark-shell

测试数组相加:

      scala> val data = Array(1, 2, 3, 4, 5) //产生data

      scala> val distData = sc.parallelize(data) //data处理成RDD

      scala> distData.reduce(_+_) //RDD上进行运算,对data里面元素进行加和

测试统计字符数:

      scala> val distFile = sc.textFile("hdfs://hadoop1:9000/input/file01.txt")

      scala> distFile.map(_.size).reduce(_+_)

查看job执行情况

http:masterIp:4040/stages

7.    JavawordCount

需要依赖jar包:$SPARK_HOME/lib/spark-assembly-1.1.0-hadoop2.4.0.jar

 

 package spark.test;

 import org.apache.spark.SparkConf;

 import org.apache.spark.api.java.JavaPairRDD;

 import org.apache.spark.api.java.JavaRDD;

 import org.apache.spark.api.java.JavaSparkContext;

 import org.apache.spark.api.java.function.FlatMapFunction;

 import org.apache.spark.api.java.function.Function2;

 import org.apache.spark.api.java.function.PairFunction;

 import scala.Tuple2;

 

 import java.util.Arrays;

 import java.util.List;

 import java.util.regex.Pattern;

 

 public final class WordCount {

   private static final Pattern SPACE = Pattern.compile(" ");

 

   public static void main(String[] args) throws Exception {

 

     if (args.length < 1) {

       System.err.println("Usage: JavaWordCount <file>");

       System.exit(1);

     }

 

     SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount");

     JavaSparkContext ctx = new JavaSparkContext(sparkConf);

     JavaRDD<String> lines = ctx.textFile(args[0], 1);

 

     JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

       @Override

       public Iterable<String> call(String s) {

         return Arrays.asList(SPACE.split(s));

       }

     });

 

     JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {

       @Override

       public Tuple2<String, Integer> call(String s) {

         return new Tuple2<String, Integer>(s, 1);

       }

     });

 

     JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {

       @Override

       public Integer call(Integer i1, Integer i2) {

         return i1 + i2;

       }

     });

 

     List<Tuple2<String, Integer>> output = counts.collect();

     for (Tuple2<?, ?> tuple : output) {

       System.out.println(tuple._1() + ": " + tuple._2());

     }

     ctx.stop();

   }

 }

对以上代码打包:WordCount.jar home/test/ 然后运行

spark-submit --master spark://hadoop1:7077 --name WordCount --class spark.test.WordCount --executor-memory 1G --total-executor-cores 2 /home/test/WordCount.jar hdfs://hadoop1:9000/home/input/mapengbo.txt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark分布式环境的搭建过程可以按照以下步骤进行: 1. 首先,将spark-env.sh.template文件拷贝为spark-env.sh,可以使用以下命令进行拷贝:cp ./conf/spark-env.sh.template ./conf/spark-env.sh。\[1\] 2. 准备工作:建立一台虚拟机,并配置好基本通用的配置信息。可以选择Ubuntu16.04作为操作系统,选择NET模式作为虚拟机网络适配器,并手动配置静态IP地址,关闭防火墙。下载搭建Spark集群环境所需的各种软件,并保存在~/spark工作目录下。\[2\] 3. 创建hadoop用户:为了方便,可以创建一个新的系统用户名,比如"hadoop"用户。可以使用以下命令创建hadoop用户、设置密码、为hadoop用户增加管理员权限,并注销当前用户,在登陆界面使用刚创建的hadoop用户进行登陆。\[2\] 4. 安装hadoop:在~/spark目录下,解压已下载的hadoop压缩包。进入hadoop配置目录,需要修改配置文件,包括hadoop-env.sh, yarn-env.sh, slaves, core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml。可以使用相应的命令对这些文件进行修改。\[3\] 以上是搭建Spark分布式环境的一般步骤,根据具体情况可能会有所不同。 #### 引用[.reference_title] - *1* [Spark 2.0分布式集群环境搭建](https://blog.csdn.net/qq_38709565/article/details/88760954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Spark分布式集群环境搭建](https://blog.csdn.net/qq_15349687/article/details/82748074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值