你好,游客 登录 注册 搜索
背景:
阅读新闻

大数据看过来,UOS上的分布式Spark集群

[日期:2015-09-17] 来源:优思得云计算  作者: [字体: ]
大数据

  随着移动互联网和物联网的兴起,大数据领域出现了两大新贵,传统的离线大数据处理框架Hadoop和统一迭代计算、流式计算和图计算的Spark。

  对于Hadoop我们并不需要过多的介绍,经典的MapReduce编程范式已经流行了近十年,但它的使用很大程度上仅限于离线计算,于是出现了Storm、Hive、Impala等项目来弥补它在流式计算和在线查询上的劣势。大量生态项目的涌入让Hadoop学习越来越复杂,并且很多公司都在重复研究和实现数据挖掘、人工智能的算法,对真正的数据工程师或数学家来说这是难以驾驭的大数据处理服务。

  这是Spark应运而生,诞生于伯克利大学的AMPLab,通过RDD的设计创新性地实现了迭代计算、流式计算、图计算等大数据处理接口,并且提供比Hadoop快10倍到100倍的性能。无论从功能来看,还是从性能来看,Spark无疑将获得大部分大数据开发者的青睐。Spark提供了Java、Scala和Python的开发接口,三行代码即可实现经典的WordCount分布式应用,因此快速了解和学习Spark也是当代程序员的基本要求。

  UOS支持

  为了满足公司内部和公有云用户的大数据开发需求,我们提供的UOS平台必须支持用户在上面运行Spark集群。

  UOS通过KVM虚拟化技术为开发者提供了按需分配的虚拟机,在需要分析数据时可以一键创建虚拟机集群,目前UOS基于Ceph统一存储虚拟机启动时间控制在10秒以内。

  建立Spark集群还需要打通网络,我们基于Neutron实现的SDN可以支持用户自由配置网络和IP地址,最简单的配置是让Spark集群的服务器都在同一个私有网络中。

  除此以外,我们全SSD的块设备也能为用户提供高性能的云硬盘存储服务。由于Ceph是分布式存储,有人担心这是否会影响Spark的性能,实际上Spark的创新之处在于设计了基于内存的RDD,才能在性能上远超Hadoop,从Spark官方文档看出Spark的性能在内存足够的情况下只限于网络。

  搭建Spark集群

  目前UOS公有云已经有使用Spark的大数据用户,我们通过他的分享来快速搭建自己的分布式Spark集群。

  要搭建Spark计算集群,我们需要创建三台服务器,系统使用Ubuntu或CentOS都是支持的,并且让绑定在同一个私有网络上。

  然后我们需要安装Java、Scala和Spark,安装步骤虽然有些繁琐,但在Ubuntu虚拟机上已经测试通过,用户也可以选择合适的版本(注意最新的Spark 1.5需要搭配Scala 2.10.x)。

  ## Install Java 7

  sudo apt-get purge -y openjdk*

  add-apt-repository ppa:webupd8team/java

  apt-get update -y

  apt-get install -y oracle-java7-installer

  ## Install Scala 2.10.5

  wget http://downloads.typesafe.com/scala/2.10.5/scala-2.10.5.tgz

  tar xzvf ./scala-2.10.5.tgz

  mv scala-2.10.5 /usr/lib/

  ## Install Spark 1.5

  wget http://d3kbcqa49mib13.cloudfront.net/spark-1.5.0-bin-hadoop2.6.tgz

  tar xzvf ./spark-1.5.0-bin-hadoop2.6.tgz

  mv ./spark-1.5.0-bin-hadoop2.6/ /usr/lib/spark-1.5.0/

  安装上述的软件后,记得在.bashrc或.zshrc添加以下环境变量,否则找不到Java或Spark命令。

  export JAVA_HOME=/usr/lib/jvm/java-7-oracle/

  export JRE_HOME=$JAVA_HOME/jre

  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  export PATH=$PATH:$JAVA_HOME/bin

  export SCALA_HOME=/usr/lib/scala-2.10.5export PATH=$PATH:$SCALA_HOME/bin

  export SPARK_HOME=/usr/lib/spark-1.5.0export PATH=$PATH:$SPARK_HOME/bin

  可以说把包下载下来就可以直接运行Spark了,但为了配置集群模式,我们还需要配置slaves文件和spark-env.sh,添加从节点和主节点的IP地址。

  cp /usr/lib/spark-1.5.0/conf/slaves.template /usr/lib/spark-1.5.0/conf/slaves

  42.62.101.17042.62.101.103

  cp /usr/lib/spark-1.5.0/conf/spark-env.sh.template /usr/lib/spark-1.5.0/conf/spark-env.sh

  export JAVA_HOME=/usr/lib/jvm/java-7-oracle/export SCALA_HOME=/usr/lib/scala-2.10.5

  export SPARK_MASTER_IP=10.250.7.235由于不能说的原因下载Java和Spark都比较耗时,可以使用UOS的虚拟机快照功能,直接克隆一个虚拟机,这样就无需重复上述的配置了。然后只需要在主节点执行start-all.sh就可以启动集群了,为了允许主节点ssh到从节点启动服务,我们需要把主节点的ssh key手动添加到从节点上。服务启动后,在8080端口就可以看到久违的Spark管理界面。

  要测试Spark服务也很简单,在主节点运行/usr/lib/spark-1.5.0/bin/pyspark,然后快速创建一个RDD,执行一下count操作,马上可以得到分布式计算后的运算结果。

  rdd = sc.parallelize([1, 2, 3])rdd.count()

  总结

  最后总结下分布式大数据并行处理框架Spark,这是令很多数据工程师和程序员痴迷的大数据框架,它同时提供了迭代计算、流式计算、图计算等接口,并且内置大量机器学习、数据挖掘算法,让任何人都能快速学习和参与到大数据开发来。

 

  UOS是基于OpenStack的高性能云服务提供商,也提供了对大数据服务和Spark的支持,希望通过我们的平台能让更多人用上Spark,通过我们的教程让更多开发者了解大数据。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款