第6讲:精通Spark集群和测试

Spark上流行的存储框架: Hadoop的 HDFS 和 S3 云存储

未来三至五年黄金组合框架:Spark+Tachyon+HDFS
Tachyon: 基于内存的分布式文件系统, 不同来源的数据,

使用Hadoop 2.6.0 目前而言,最稳定的版本
2.7.2hadoop全分布集群搭建

一.准备

1.root权限
2.修改机器名称 hosts ,hostname
mkdir/usr/local/hadoop-2.7.2/tmp
mkdir/usr/local/hadoop-2.7.2/dfs
mkdir/usr/local/hadoop-2.7.2/dfs/name
mkdir/usr/local/hadoop-2.7.2/dfs/data
3.安装SSH,rsync
4.安装JDK 配置环境变量 复制到其他机器上

二.安装hadoop (复制到其他机器)

  1. 配置环境变量
  2. 新建文件夹 dfs(name ,data) ,tmp
  3. 添加hadoop-env.sh yarn-env.sh mapred-env.sh 的java 路径
  4. 修改 Slaves
  5. 修改core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml
  6. 通过scp命令直接将整个文件夹复制到worker1和worker2
    :/usr/local# scp -r hadoop-2.7.2/ root@SparkWorker1:/usr/local/
    :/usr/local# scp -r hadoop-2.7.2/ root@SparkWorker2:/usr/local/
  7. 配置其余主机的.bashrc文件(用户变量)或profile(全局变量)
    配置HADOOP_HOME,SPARK_HOME,SCALA_HOME等信息
    scp /etc/profile root@SparkWorker1:/etc/
    scp /etc/profile root@SparkWorker2:/etc/

http://master:8088/是yarn的web界面
http://master:50070/是hadoop运行状态web

三.安装Spark 2.0.0

1:解压到指定目录,并重命名文件夹
tar -zxvf /下载/spark-2.0.0-bin-hadoop2.7.tgz
mv spark-2.0.0-bin-hadoop2.7/ spark
2:配置环境变量
vim /etc/profile ,加入
export SPARK_HOME=/usr/local/spark
export PATH= SPARKHOME/bin: PATH
3:配置spark-env.sh
复制 :sudo cp spark-env.sh.template spark-env.sh
加入以下:
1.export SCALA_HOME=/usr/lib/scala
2.export JAVA_HOME=/usr/lib/java/jdk
3.export SPARK_MASTER_IP=192.168.30.211
4.export SPARK_WORKER_MEMORY=8g
5.export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
4:将slaves.template 拷贝到 slaves, 编辑内容为
master1
slave1
slave2
5:将spark目录拷贝到各个节点
sudo scp -r /opt/spark/ slave1:/opt/spark
sudo scp -r /opt/spark/ slave2:/opt/spark
并修改各个节点的环境变量
6:启动 spark
启动master:sbin/start-master.sh
启动salve:sbin/start-slaves.sh

http://master:8080/查看spark的web页面

四.运行测试

scala> ./spark-submit --class org.apache.spark.examples.SparkPi --master spark://SparkMaster:7077 ../examples/jars/spark-examples_2.11-2.0.0.jar 1000
//计算Pi值
//1000 为并行度

每次计算 Pi的值都不一样
再次运行比前次更快

Coarse Grained 粗纹理的;粗颗粒的

粗粒度 : 程序启动初始化的那一刻就分配好资源,后续程序具体的计算时,直接使用资源计算,不需要每次计算时,去再分配资源。(先分配资源)

细粒度 : 计算那一刻你需要资源的时候才给你分配,计算完成后立即回收资源。万一有一个任务完成,其他资源闲着浪费。(计算时分配)

./spark-shell --master spark://SparkMaster:7077
//启动 spark-shell

scala> sc.textFile("/input").flatMap(_.split(" ")).map(word => (word,1)).reduceByKey(_+_).map(pair => (pair._2,pair._1)).sortByKey(false).map(pair => (pair._2,pair._1)).saveAsTextFile("/output/spark_demo1")

sc.textFile    //读取File 文件
flatMap(_.split(" "))  //split 单词切分
map(word => (word,1))  // word 变成数组
reduceByKey(_+_) // 算法 相加 
map(pair => (pair._2,pair._1)) //交换位置
sortByKey(false) //排序
map(pair => (pair._2,pair._1)) //再次交换位置
saveAsTextFile("/output/spark_demo1") //保存文档

官网quick start运行README.md
scala> val textFile = sc.textFile("README.md")
//从README的文本中建立一个新的RDD在Spark源目录
textFile: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[3] at textFile at <console>:24

scala> textFile.count()
//统计文件内容的行数
res1: Long = 99

scala> textFile.first()
//内容的第一行
res2: String = # Apache Spark

scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
//使用筛选器转换返回一个新的RDD中的条目的一个子集
linesWithSpark: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at filter at <console>:26

scala> textFile.filter(line => line.contains("Spark")).count()
//统计有多少行Spark
res3: Long = 19

scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[10] at reduceByKey at <console>:26

scala> wordCounts.collect()
//统计README的单词数
res5: Array[(String, Int)] = Array((package,1), (this,1), (Version"](http://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version),1), (Because,1), (Python,2), (cluster.,1), (its,1), ([run,1), (general,2), (have,1), (pre-built,1), (YARN,,1), (locally,2), (changed,1), (locally.,1), (sc.parallelize(1,1), (only,1), (Configuration,1), (This,2), (basic,1), (first,1), (learning,,1), ([Eclipse](https://cwiki.apache.org/confluence/display/SPARK/Useful+Developer+Tools#UsefulDeveloperTools-Eclipse),1), (documentation,3), (graph,1), (Hive,2), (several,1), (["Specifying,1), ("yarn",1), (page](http://spark.apache.org/documentation.html),1), ([params]`.,1), ([project,2), (prefer,1), (SparkPi,2), (<http://spark.apache.org/>,1), (engine,1), (version,1), (file,1), (documentation...
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值