最近一直在参加安徽省大数据与人工智能应用竞赛,因此学习了很长一段时间的大数据,也积攒了一些大数据的开发经验;工欲善其事,必先利其器,所以想要给准备学习大数据的同学总结一下自己在大数据开发中所用到的工具。
VMware Workstation,相信大家都不陌生了,由于目前的大部分的电脑都是预装了 Windows ,不少和我一样为了避免安装双系统从而进行 Linux 等方面的开发的用户就会使用该软件来安装 Linux 虚拟机来进行相关开发。而在日常大数据的学习及开发中,会需要搭建 “一主二从” 的计算机集群,如果使用物理机搭建集群,对于我这样一个学生党来说是负担不起的;而通过 VMware Workstation 便可以虚拟化物理设备,来在主机上安装多个操作系统,从而来搭建多计算机集群。
VMware 界面展示
当然,能够实现搭建计算机集群功能的不止 VMware,像是免费的 VirtualBox、Windows 自带的 Hyper-V 等等,那为什么要选择 VMware 呢?主要是因为以下几点优势:
1、首先,VMware 在硬件虚拟化这个方向算是老大,相较于 VirtualBox 等其他硬件虚拟化平台,VMware WorkStation 更加地稳定,而且出错了在网络上或是官网上都能找到答案。
2、其次,VMware 能够提高硬件利用率,降低相关开销,同时兼具灵活性和可控性,在给虚拟机分配硬件资源时更加容易操作。
3、VMware 能够桥接到本机,即模拟了真实的实验环境,又保证了本机的安全。
有了虚拟机,就要想办法对虚拟机进行连接,如果不使用桌面的话,一直对着卡顿的虚拟机命令行敲命令是很难受的。而使用一款中端模拟软件就能轻松的解决这个问题。这里我强推 XShell,尤其是 Xshell 最近推出了个人免费版,不再需要花钱或上网寻找破解版来使用该软件;其次,该软件还有一个配套软件 Xftp,与 Xshell 同样好用,只需要 Xshell 连接到虚拟机,便可以点击 Xftp 图标来使用 Xftp 将本机文件发送到虚拟机节点上。
Xshell 界面展示
当然,能够进行 SSH 连接到虚拟机的应用不止 Xshell,像是 Putty、XManager、secureCRT 甚至你的 CMD 都是可以进行 SSH 连接的。但我独钟 Xshell,主要体现在以下几点:
IDEA嘛,相信大家都懂的😁,学习过 Java 的小伙伴一定都了解或使用过这款软件吧!虽然相较于 Eclipse、MyEclipse 等软件来说有点吃性能,但毕竟 2022 年了,电脑的性能已经比之前强了不少,JetBrain 也对 IDEA 的性能做了优化,使用 IDEA 用来学习 Java 是非常不错滴👍。而且如果你是 Java 基础来学习大数据,只需要安装 Scala 插件,就能在一个编译器上使用 Java 编写 MapReduce 代码以及使用 Scala 编写 Spark 代码了。其次,IDEA 中自带了很多插件,像是 Maven 插件,让你不用配置繁琐的 Maven 本地环境就可以体会到 Maven 所给你带来的便捷,其它的插件大家也可以自行探索哦!
IDEA 界面展示
提到大数据,就必不可少的要提到 Hadoop 了。Hadoop 是由 Apache 基金会所开发的分布式系统基础架构,可以让用户在不了解分布式底层细节的情况下进行分布式项目的开发。Hadoop 主要由 HDFS、MapReduce、YARN 组成, 下图中的 Hadoop 生态主要是依托于 Hadoop 平台而相互兼容、发展起来的应用框架,进行大数据开发就要从 Hadoop 这块基石开始学习,进而扩展,强化自己的能力。
Hadoop 生态图
当然,站在企业的角度来说,Hadoop 可以解决问题,并且最主要的是成本低与其完整的生态圈。其次,Hadoop 的高可靠性、高扩展性、高效性、高容错性都为大数据的开发提供了保障。总结来说有以下几点:
Hive 是一个构建在 Hadoop 上的数据仓库工具,通过 Hive,能够将结构化的数据文件映射为一张数据库表,并通过 SQL 语句转变成 MapReduce 来完成数据的查询功能。当然,这也是比赛以及大数据开发中的重要一环。在比赛中,一般会有一大题是使用 Hive 进行结构化数据操作的,学习过 SQL 的小伙伴一般都能完成。而在开发以及生产过程中,Hive 突出的优势在于一些对于实时性要求不高的场合,比如数据分析,高效地处理大数据。
Spark 是 Apache 开源的一种专门用于交互式查询、机器学习和实时工作负载的开源框架,通过内存处理的方式,能够极大的提高大数据分析的效率以及性能。从一些学术网站上也可以看到,关于 Spark 的论文数量也是非常多的,这也意味着 Spark 仍然是一个比较流行的技术,目前在大数据开发中也是一项不可或缺的技术。在一些实时性较高的场景下,Spark 应用的场景更为广泛。
业内,人们常用 Hadoop 与 Spark 作比较,以此来体现 Spark 的优势所在;这里我们也与 Hadoop 作对比,体现一下 Spark 的优势所在:
Obsidian 是我一直推荐的免费笔记软件,每次学习大数据的内容我都会记录到这款软件里;最近 Obsidian 更新到了 1.0 版本,在界面性能等方面都进行了优化,更是让我爱不释手。Obsidian 还具有文档关系图谱、插件扩展等引人注目的功能;通过文档关系图谱,我们就能轻松管理知晓文档之间的联系,以便梳理自己的思维;通过安装插件,就能够丰富 Obsidian 的功能,比如思维脑图、Excalidraw 绘图等功能。还在为没有合适的笔记软件而发愁的小伙伴一定要试一试。
Obsidian 界面展示
相信不少使用过 Python 的同学都使用过 Jupyter Notebook 吧,毕竟大部分教程似乎都是使用 Jupyter Notebook 平台来完成的。然而,在使用 Jupyter Notebook 的时候总是感觉有些力不从心,代码提示、文件目录浏览等功能都没有在 Jupyter Notebook 上得以实现。而 JupyterLab 具有更好的交互性,模块化界面设计以及同一文档多视图等特点都能够帮助我们更好地开发,百度飞桨的 BML CodeLab、和鲸社区的 ModelWhale 似乎都是基于 JupyterLab 打造,以便给用户带来更好的体验。
JupyterLab 界面展示
分析完数据后,如何将我们分析的数据精美地呈现出来呢?Pyecharts 绝对不能错过。Echarts 是百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,将 Echarts 与 Python 结合,Pyecharts 便由此诞生。使用 Pyecharts 来进行数据可视化,能够向他人展现出十分惊艳的效果。(下图是使用 Pyecharts 画出的 3D 地图)
Pyecharts 3D地图案例
有些时候,我们只需要将我们的数据以图形的方式展现出来即可,并不需要过于的美观图形时(比如我们比赛时,时间紧急),可以考虑 Pyecharts 与 Matplotlib 混用的方式。这里不是指将两者的 api 以嵌套等方式结合起来,而是根据情况分别使用 Pyecharts 与 Matplotlib 进行作图。因为 Matplotlib 作图不需要写太多的代码,而且逻辑比较简单,相应的,功能也比较简单;当遇到 Matplotlib 做不了的图时(比如地图等),然后考虑使用 Pyecharts 来作图(毕竟比赛时间宝贵!)。
当然生产环境下还是使用 Pyecharts 比较好,毕竟需要用户认可才会买单。
容器技术是一种轻量级的虚拟化技术,随着云原生技术的发展而主键发展起来,其中比较出名的容器技术就是 Docker。Docker 是一个开源平台,它将应用源代码与操作系统(OS)库和在任何环境中运行该代码所需的依赖性结合起来,使开发者能够更快速的完成构建、部署、运行环境的需求。我在学习 Pyspark 时,因为懒得搭环境,就可以从 DockerHub 中直接拉取别人制作好的 pyspark 镜像,并直接运行即可,免去了安装操作系统、安装 Hadoop、Spark 等环境的麻烦。容器技术在未来的很长一段时间都不会没落,因此也建议学习计算机的小伙伴能够学习一下容器技术。
Docker 界面展示
刚接触 Docker 小伙伴可能会认为 Docker 可以替代虚拟机了,但是实际上,两者还是有很大的差别的:
总的来说,Docker 是面向服务的,虚拟机是面向操作系统的,两者各有优劣,需要根据自己的需求来具体选择使用。
工具有很多种,只有选择好趁手的武器,才能更容易打怪升级。希望大家都能选择合适自己的工具,在自己所选的道路上越走越远!👍