1. GISpark简介

GISpark为数据工程专家、大数据科学家、地理与空间研究的学者而设计,将理论、方法、模型、算法与数据链接为一个开放的平台,使任何对时空数据和地理建模感兴趣的人和各领域研究都能从中获益。GISpark提供完整的时空数据处理与建模分析工具集和运行环境,从而让使用者能够减少大规模IT系统复杂性的影响,将更多精力投入到关注所要解决的问题本身。GISpark集GIS方法、科学计算环境和云计算、分布式计算技术之大成,将大数据技术运用于地理空间领域问题的解决,同时将GIS的时空分析能力带入大数据行业,促进时空一体化的大数据分析技术和大数据解决方案的发展。

1.1. GISpark是什么?

GISpark 是用于大规模地理空间信息处理与建模分析的分布式计算平台。

  • GISpark基于OpenStack云计算环境和Docker容器技术进行开发,用于构建多用户托管的云计算基础设施。
  • GISpark采用HDFS/Ceph/MongoDB等大规模虚拟化存储系统进行时空信息的存储,能够处理大规模的矢量、影像和流式数据,能够兼容已有的GIS系统,并拓展GIS的数据服务和空间分析能力到整个IT基础设施。
  • GISpark采用最新的Spark分布式并行计算框架,融合GIScript地理空间信息脚本引擎和多种开源的GIS模型库,可以快速集结数百台服务器进行大规模的时空信息处理和地理模型分析。
  • GISpark集成Anaconda科学计算环境和Jupyter notebook交互计算Web界面,包含大量的经典算法和模型库,可以为时空大数据处理和时空一体化分析提供持续发展的模型系统。
  • GISpark集成TensorFlowOrange等多种机器学习算法库,包含深度学习、对象识别、网络分析、自主分类、降维分析、随机森林、支持向量机等多种算法,为地理空间模型与机器学习的进一步融合打下了坚实的基础。
  • GISpark是一个高度可扩展的架构,全部采用开源软件搭建,同时可以集成SuperMap GIS的强大地理空间数据处理和制图、可视化与地图发布服务、空间分析服务等重要能力,并能集成其它各种商业软件模块。
  • GISpark集成GitLab源代码托管、Jenkins自动化构建、Maven软件仓库等持续集成软件,充分利用Git的分布式版本管理能力,可以为用户构建一个持续交付的IT基础设施。以及通过SuperMap Portal/iServer/Express等服务器系统和iDesktop/iClient/iMobile等客户端工具的综合运用,快速建立时空大数据处理和在线分析的GIS云平台。

GISpark易于学习,并且随着社区不断演进,是一个自我进化的时空大数据平台。

1.2. GISpark 体系架构

GISpark并非一个固定的框架或模式,采用开源框架并保持开放,让各种模型和算法可以非常容易集成进来,甚至于改变GISpark本身。

GISpark通过OpenStack等云计算环境建立计算基础设施,采用Docker等容器技术为多用户建立独立的运行环境。GISpark通过虚拟存储技术建立统一的大规模存储系统和访问接口,保障所有用户可以按照一致的方式访问需要的数据。GISpark为每一个用户建立Anaconda科学计算环境,可以在线运行Python/R以及其他语言建立的模型,并通过Github或类似的方式进行模型和计算结果的版本控制、即时协作和在线共享。

GISpark通过运行于大规模计算资源的Spark或iPyParallel等分布式调度服务来按需提供计算能力,以最快的速度获得计算结果,并通过网络发布出来,供所有连接的终端和系统进行使用。

1.3. GISpark 实施路线图

可以使用基于GISpark建立的IT服务设施,或者搭建自己的GISpark运行环境。

如果使用GISpark服务资源,只需要登入服务系统,就能获得需要的基础服务,但仍然需要掌握数据分析的基本方法,如Python及其相关的NumPy/SciPy/Pandas/Spark等基础知识,对于时空数据的格式和模型不需要精确地了解,但数据的特性、使用的方法、模型的适应性和专业领域的知识的深入掌握是必须的能力,是驾驶大数据获得正确结论和解决领域问题的必由之路。

如果搭建自己的GISpark运行环境,这里提供了完整的指南。所采用的软件都已经广泛使用并且提供源代码,而且可以从开放文档获得经验,以及从社区获得帮助,或者通过其生态系统获得技术支持和定制的服务。搭建自己的GISpark运行环境具有强大的灵活性,可以自行决定配置的组件和规模,以及通过定制更好地与其他业务连接,实现自动化的处理流程。不过,这需要对Linux/Dokcer/Spark/Jupyter/GitLab等的安装和配置有足够的了解,并且对网络运维和安全配备一定的人员进行管理和维护,对资源的使用进行调度以达到更高的使用效率。

将公共GISpark服务和专有的GISpark环境进行对接,迁移和混合使用,也是非常简单的事情,因为二者采用了相同的软件接口和技术栈。因此,我们也建议尽量保持自己的环境与公有设施尽量保持一致,对不一致的地方进行隔离以便单独处理。

1.4. 可持续的信息基础设施

GISpark 的目标是提供一个可持续的地理空间信息基础设施。

信息系统的持续性是一件极具挑战性的事情。因为信息系统的运行过程中有很多因素导致原先设定的目标无法达成,或在运行过程被中断,导致所积累的知识和付出的投资无法得到回报,问题也无法得到最终的解决。

影响信息系统持续性主要有五大挑战性因素,包括:

  1. 业务变化。往往由需求变化引起,然后系统设计的目标将随着发生大的变化,从而引发功能、软件形态和运行形式的巨大调整,进一步引起业务流程和管理制度的改变和要素的重组,原来的架构被重新开发,模块的重用也成为泡影。
  2. 人员变动。人员频繁变化是IT领域面临的通病,这不仅包括人员组织的变化,也包括与其相关的知识结构、文档体系、培训教育和知识的传承。即便“人”全部保持不变,也会面临由于新技术的引入需要学习新知识和采用新流程的问题,导致难以应对新的挑战和不断解决新的问题。
  3. 数据变化。业务运行中,数据规模将不断增长,不断引入新的数据类型,以及建立新的数据获取手段、为了新功能而进行数据结构的调整,都会导致原来的数据基础发生变化,引发效率降低、系统崩溃、数据错误,甚至变得不再可用。而数据的更新往往需要花费巨大的代价和时间成本。
  4. 系统扩容。随着系统的投入运行,往往规模会变得越来越大。当现有实施无法满足业务增长需要时,就需要进行扩容和部署的变更。遗憾的是,大部分系统并不能线性地进行规模扩展,效率会急剧下降甚至进入瓶颈阶段,甚至引发大面积的宕机现象,让业务步入泥潭。
  5. 软件更新。由于功能调整、性能优化或者仅仅是Bug修复,软件总是处于不断的优化、升级的过程中。并非每次升级都能解决问题,有时候还会引入新的破坏性因素。可怕的是,如果对升级的影响缺乏足够的评估和测试、验证,可能会带来一系列的连锁反应,导致升级的结果无法控制、成本超出预期。

GISpark 采用虚拟化和微服务架构提供灵活的基础设施,可以实现资源的动态调度和服务的动态编排、负载均衡、故障转移等能力。

通过基于Git的分布式版本控制,可以实现多版本共存和网络协同,从而降低需求变化带来的不利影响,以及应对数据和软件版本的兼容性问题。

通过Maven软件仓库和Jekins持续集成和持续交付的功能,将软件开发、自动化测试、快速部署过程集成到一个预定的流程之中,实现软件“从摇篮到坟墓”的持续交付过程的规范化和自动化,可以将原有的组件和代码实现更高程度的复用,从而提高运营的效率,减少人为因素在大规模部署中的影响。

通过软件技术与开源社区的融合,为人才培养提供社会化的储备,而且可以从社区获得知识、经验和更好的解决方案,通过向社区共享成果,构建共赢、共享、互利的开放社区,使这一过程进入良性循环。