Spark集群搭建与测试

来源:互联网 发布:社会网络下资产选择 编辑:程序博客网 时间:2024/05/05 10:53

1.虚拟机与Linux
Spark+Tachyon+HDFS(HDFS擅长迭代运算,Tachyon基于内存分布式系统)
Spark是一个计算框架,需要相应的存储框架。目前是基于下面三种存储:
1.Hadoop的HDFS
2.S3,也就是云存储
3.Tychyon(业界在越来越多使用)
Spark+Tachyon+HDFS,将来是黄金组合
Tychyon是基于内存的分布式存储(分布式内存文件系统),也是来自berckly大学的AIM实验室。通过Tychyon可以把不同来源的数据合并起来。是用Java写的
数据不动代码动
Hadoop是Java开发的,可以运行在JVM中
Scala运行在JVM中
Spark是用Scala写的,所以也可以在JVM中
开发环境:
Windows系统,建议用win7
CPU,i7最好
内存,至少8G,建议金士顿8G * 2
VMware,11
Linux,首选CentOS,可以Ubuntu(ubuntukylin-14.04.2-desktop-amd64.iso)
镜像,8核8G,网络使用NAT模式
2.Hadoop集群的搭建和配置
Hadoop,2.6.0,目前最稳定版本,经过业界证实

安装路径:

cd /usr/local/jdk

cd /usr/local/hadoop

cd /usr/local/spark

生产环境里,可以自己编写自动化安装集群脚本,主要是基于CM(Cloudera Manager)和CDH进行集群安装

【Hadoop】

hadoop-2.6.0/etc/hadoop里是配置文件,主要的配置文件有:

core-site.xml

hdfs-site.xml

HDFS的block默认128M

多份副本,默认是3个副本

namenode,管理所有节点,数据的元数据在namenode里,而且也容易发生故障。所以有一个secondary namenode

mapred-site.xml

配置map/reduce运行在什么框架上,也就是yarn

yarn-site.xml

hadoop-env.sh

配置环境变量

~/.bashrc

配置bash的环境变量

slaves

包含datanode

$ bin/hdfs namenode -format

格式化磁盘为HDFS格式

配置了ssh信任互访之后就可以把hadoop文件夹,拷贝到其他机器中

scp -r ./hadoop-2.6.0 root@Worker1:/usr/local/hadoop/

scp /etc/hosts root@Worker1:/etc/hosts

jps,查看Hadoop的进程

tar -zxvf -c 指定目录 aaaa.tgz

3.Spark集群的搭建和配置
【Spark】

conf/spark-env.sh

用template copy一份,做修改

worker_cores,限制了并行处理的worker的数量

slaves,配置worker

配置~/.bashrc里环境变量

source ~/.bashrc,使其生效

然后同步环境变量文件到其他机器上

spark-defaults.conf

粗粒度,程序初始化时一次性分配资源,计算时不需要再申请资源

细粒度,程序计算时分配资源,计算结束后回收资源

yarn是粗粒度

Mesos既支持粗粒度,又支持细粒度

http://master:8088/cluster

spark web UI:4040端口

Hadoop web UI:50070端口

SparkPi程序

object SparkPi {  def main(args: Array[String]) {    val conf = new SparkConf().setAppName("Spark Pi")    val spark = new SparkContext(conf)    val slices = if (args.length > 0) args(0).toInt else 2    val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow    val count = spark.parallelize(1 until n, slices).map { i =>      val x = random * 2 - 1      val y = random * 2 - 1      if (x*x + y*y < 1) 1 else 0    }.reduce(_ + _)    println("Pi is roughly " + 4.0 * count /

每一个广告点击的总次数

点击排名(倒排)

SortBykey(false,1),其中1表示并行度

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

CDH
这里写图片描述

Spark
这里写图片描述

HDFS
这里写图片描述

HBase
这里写图片描述

0 0
原创粉丝点击