计算机专业介绍?

栏目:资讯发布:2023-11-21浏览:2收藏

计算机专业介绍?,第1张

上面都是计算机处理信息、理解信息的例子。

上个世纪,几个超前的前辈(图灵、冯诺依曼)搞了几个东西,使我们进入了信息时代,计算机已经融入我们生活的方方面面,我们的衣(淘宝)食(美团)住(携程)行(滴滴),其实都离不开计算机技术的支持。

如果要给计算机定义两个特点,那么将会是形式化和抽象化。在计算机的世界里面,定义了各种各样的标准和规定,所有事情都按规则办事。其中有定义人如何给指令让计算机计算,计算机跟计算机之间如何沟通等等的规定。而抽象化则是解决问题的能力,如何把一个事实的问题,摒弃一些无关因素,然后把它抽象成一个典型的通用的问题。所以计算机的需要的逻辑思维能力非常强。

这里可以讲形式化和抽象化的例子。数学其实就是这样子。我们首先会把现实问题抽象成数学问题,关于数学问题的描述以及求解,都用数学自己的语言去做。在数学世界里,是非常形式化和规范化的。

计算机瞬息万变,但是有一个原则,怎么方便就怎么来。从PC时代,到现在的移动端时代,再到以后物联网时代,一旦时机和环境成熟,更高效率的解决方案将会替代以前的方法。

计算机学什么?

计算机有几个代表课程,分别是:高级程序设计语言、数据结构、算法导论、计算机网络、操作系统、计算机系统(计算机组成原理)、编译原理等等。

高级程序设计语言:它是一门语言,它是用来人类向计算机传递指令用的。就好像我们的英语一样,是来传达我们人类的意思的,也有像主谓宾这种规则。比如C++,java,python就属于高级程序设计语言。高级语言搭建了人类跟机器的桥梁。

数据结构:数据结构讲的是数据跟数据之间的关系。数据结构的意义在于我们更好地表示数据,操纵数据。比如在学生信息表中,张三跟王五是两个数据,他们的关系是同等的线性关系,所以我的学生信息表是一个列表。而装子弹的弹夹也是子弹和子弹之间是线性关系,但是有个区别就是先装进去的子弹最后才能取出来。又比如我们的家谱:

则是一种树形的数据结构,因为论辈分和血缘关系,家族成员是从属关系(我是你父亲,你是我儿子)。

又比如一个交通地图:

他是一个图的数据结构,这里的数据是一个个地点。地点和地点之间可能有直接通道或者没有通道。图是最复杂的数据结构。

算法导论:有了数据的表示,数据的结构,我们计算机专业还要去思考怎么去更好地处理数据,用什么样的方法去处理数据,这些方法就是算法。算法可以理解为解决问题的步骤。举个例子,给你十个数字:

123,524,521,789,342,254,765,242,653,913

让你从小到大排序,你会怎么排序(你是怎么做到从小到大排序的)?

可能的方法是每次从中挑选一个最小的数字出来,先挑最小的123,再挑最小的242,。。。,直到最后得到一个排序。

但是如果你对10000个数据进行从小到大排序,这种方法可能就很慢,我们计算机专业就要研究更快的方法。比如下面这种:

先按百位数排序,将同一个百位数的数字(比如242和254的百位数都是2)归为一组,在这一组内再按十位数排序,再按个位数排序:按百位数排序,得到242和254一组,再按十位数排序得到242,252,然后再把每个百位数的排序结果串起来,就得到最终的结果了。可以证明,这种方法是更加快速的方法。

又比如,你在做一个数学计算题,你算123456+789987,你会怎么算?你会先算123456,再算789987,然后再加起来得出计算结果。在这个过程中,你就使用了一种算法,叫做分治法,就是你会把一个问题变成几个子问题再求解。

又比如,你卖东西找零钱给人,找8块5,你会先给5块,再给3张1块,再给5毛,这是一种贪心算法。

上面都是属于我们计算机专业要学习的东西,因为这些方法更高效,我们计算机追求的就是高效率。可以这么说,计算机的科学家,都有多多少少的完美主义,他们都想至善至美的找到最高效的方法去解决问题。

计算机网络:计算机网络学的是计算机和计算机之间的通讯。换句话说,就是两个计算节点如何传递信息。这里,我们也是去探索如何更快、无差错、安全地传播我们的数据。

为了传播数据,就要指定统一的标准,不然就不知道你传的是什么东西。计算机网络就像我们的快递分发。比如天猫的快递小哥,从北京要送快递到广州。他将会收到一个快递,快递由包裹包着,包裹上面写着收件人,收件人地址等信息。然后快递小哥就出发了,从广州到了上海中转站,然后在这个中转站有一个路线图,你说你要送到广州,那么下一站是去杭州,再下一站就到广州,最后把包裹送到你手里。这个过程,如何去建立中转站,中转站要有什么功能,包裹如何包装,包裹要有什么信息,都是我们计算机网络要去学习的东西。

操作系统:windows就是一个操作系统,操作系统就是一个指挥中心,它的任务是资源的调度和分配,工作的安排等等。资源的调度可以这样考虑,我们可以考虑银行贷款,你开了一家银行,你有100万,现在有5个人向你贷款,每个人的贷款数额不一样,你要怎么贷款给他们?当他们的贷款总额小于100万的时候直接全部统一贷款,当贷款总额大于100万之后呢?又来了3个人要贷款呢?在考虑还有4个人计划在下个月还款的情况呢?工作的安排就好像你要做一件大事,比如建一个房子,你会先买砖头、钢筋水泥,买好后,你要叫师傅去建框架,建好后你要装修,等等,你都要安排人员去办,这时候,你就是一个操作系统。除此之外,操作系统还要管理你的个人文件,比如你下载了一个文件,放到哪里,你卸载的一个软件,具体要做什么东西,你清空了回收站,又会发生什么,这些都是操作系统负责。

计算机系统:这门课讲计算机的构成,每个部件之间如何协调工作。计算机有CPU、内存、磁盘、显示器、打印机、键盘、鼠标等,那么他们如何工作呢?这门课就讲这些。

这门课比较关键的有流水线(跟工厂流水线一样)、缓存(先把东西放到仓库,再批量地拿)、中断(多个软件在执行,为什么不会卡顿?)等技术。

编译原理:这门课据说是程序员三大浪漫,我就不解释了。

  今年,大数据在很多公司都成为相关话题。虽然没有一个标准的定义来解释何为 “大数据”,但在处理大数据上,Hadoop已经成为事实上的标准。IBM、Oracle、SAP、甚至Microsoft等几乎所有的大型软件提供商都采用了Hadoop。然而,当你已经决定要使用Hadoop来处理大数据时,首先碰到的问题就是如何开始以及选择哪一种产品。你有多种选择来安装Hadoop的一个版本并实现大数据处理。本文讨论了不同的选择,并推荐了每种选择的适用场合。

  Hadoop平台的多种选择

  下图展示了Hadoop平台的多种选择。你可以只安装Apache 发布版本,或从不同提供商所提供的几个发行版本中选择一个,或决定使用某个大数据套件。每个发行版本都包含有Apache Hadoop,而几乎每个大数据套件都包含或使用了一个发行版本,理解这一点是很重要的。

  相关厂商内容

  AWS中众多存储选项、理想使用情况及弹性和可扩展性等特性。 有哪些实现EMR最佳实践的方法和实现更快处理速度的常见架构模式。 Windows Azure从开发到部署的自动化进程 微软Windows Azure开启机器学习之旅 基于开源软件的Azure平台大规模系统构建

  相关赞助商

  

  Windows Azure专区上线,全面了解云服务精彩呈现!

  下面我们首先从Apache Hadoop开始来好好看看每种选择。

  Apache Hadoop

  Apache Hadoop项目的目前版本(20版)含有以下模块:

  Hadoop通用模块:支持其他Hadoop模块的通用工具集。

  Hadoop分布式文件系统(HDFS):支持对应用数据高吞吐量访问的分布式文件系统。

  Hadoop YARN:用于作业调度和集群资源管理的框架。

  Hadoop MapReduce:基于YARN的大数据并行处理系统。

  在本地系统上独立安装Apache Hadoop是非常容易的(只需解压缩并设置某些环境变量,然后就可以开始使用了)。但是这只合适于入门和做一些基本的教程学习。

  如果你想在一个或多个“真正的节点”上安装Apache Hadoop,那就复杂多了。

  问题1:复杂的集群设置

  你可以使用伪分布式模式在单个节点上模拟多节点的安装。你可以在单台服务器上模拟在多台不同服务器上的安装。就算是在该模式下,你也要做大量的配置工作。如果你想设置一个由几个节点组成的集群,毫无疑问,该过程就变得更为复杂了。要是你是一个新手管理员,那么你就不得不在用户权限、访问权限等诸如此类的问题中痛苦挣扎。

  问题2: Hadoop生态系统的使用

  在Apache中,所有项目之间都是相互独立的。这是很好的一点!不过Hadoop生态系统除了包含Hadoop外,还包含了很多其他Apache项目:

  Pig:分析大数据集的一个平台,该平台由一种表达数据分析程序的高级语言和对这些程序进行评估的基础设施一起组成。

  Hive:用于Hadoop的一个数据仓库系统,它提供了类似于SQL的查询语言,通过使用该语言,可以方便地进行数据汇总,特定查询以及分析存放在Hadoop兼容文件系统中的大数据。

  Hbase:一种分布的、可伸缩的、大数据储存库,支持随机、实时读/写访问。

  Sqoop:为高效传输批量数据而设计的一种工具,其用于Apache Hadoop和结构化数据储存库如关系数据库之间的数据传输。

  Flume:一种分布式的、可靠的、可用的服务,其用于高效地搜集、汇总、移动大量日志数据。

  ZooKeeper:一种集中服务,其用于维护配置信息,命名,提供分布式同步,以及提供分组服务。

  还有其他一些项目。

  你需要安装这些项目,并手动地将它们集成到Hadoop中。

  你需要自己留意不同的版本和发布版本。不幸的是,不是所有的版本都能在一起完美地运行起来。你要自己比较发布说明并找出解决之道。Hadoop提供了众多的不同版本、分支、特性等等。跟你从其他项目了解的10、11、20这些版本号不同,Hadoop的版本可远没这么简单。如果你想更进一步了解关于“Hadoop版本地狱”的细节,请阅读“大象的家谱(Genealogy of elephants)”一文。

  问题3:商业支持

  Apache Hadoop只是一个开源项目。这当然有很多益处。你可以访问和更改源码。实际上有些公司使用并扩展了基础代码,还添加了新的特性。很多讨论、文章、博客和邮件列表中都提供了大量信息。

  然而,真正的问题是如何获取像Apache Hadoop这样的开源项目的商业支持。公司通常只是为自己的产品提供支持,而不会为开源项目提供支持(不光是Hadoop项目,所有开源项目都面临这样的问题)。

  何时使用Apache Hadoop

  由于在本地系统上,只需10分钟左右就可完成其独立安装,所以Apache Hadoop很适合于第一次尝试。你可以试试WordCount示例(这是Hadoop的“hello world”示例),并浏览部分MapReduce的Java代码 。

  如果你并不想使用一个“真正的”Hadoop发行版本(请看下一节)的话,那么选择Apache Hadoop也是正确的。然而,我没有理由不去使用Hadoop的一个发行版本——因为它们也有免费的、非商业版。

  所以,对于真正的Hadoop项目来说,我强烈推荐使用一个Hadoop的发行版本来代替Apache Hadoop。下一节将会说明这种选择的优点。

  Hadoop发行版本

  Hadoop发行版本解决了在上一节中所提到的问题。发行版本提供商的商业模型百分之百地依赖于自己的发行版本。他们提供打包、工具和商业支持。而这些不仅极大地简化了开发,而且也极大地简化了操作。

  Hadoop发行版本将Hadoop生态系统所包含的不同项目打包在一起。这就确保了所有使用到的版本都可以顺当地在一起工作。发行版本会定期发布,它包含了不同项目的版本更新。

  发行版本的提供商在打包之上还提供了用于部署、管理和监控Hadoop集群的图形化工具。采用这种方式,可以更容易地设置、管理和监控复杂集群。节省了大量工作。

  正如上节所提到的,获取普通Apache Hadoop项目的商业支持是很艰难的,而提供商却为自己的Hadoop发行版本提供了商业支持。

  Hadoop发行版本提供商

  目前,除了Apache Hadoop外, HortonWorks、Cloudera和MapR三驾马车在发布版本上差不多齐头并进。虽然,在此期间也出现了其他的Hadoop发行版本。比如EMC公司的Pivotal HD、IBM的InfoSphere BigInsights。通过Amazon Elastic MapReduce(EMR),Amazon甚至在其云上提供了一个托管的、预配置的解决方案。

  虽然很多别的软件提供商没有开发自己的Hadoop发行版本,但它们和某一个发行版本提供商相互合作。举例来说,Microsoft和Hortonworks相互合作,特别是合作将Apache Hadoop引入到Windows Server操作系统和Windows Azure云服务中。另外一个例子是,Oracle通过将自己的软硬件与Cloudera的Hadoop发行版本结合到一起,提供一个大数据应用产品。而像SAP、Talend这样的软件提供商则同时支持几个不同的发行版本。

  如何选择合适的Hadoop发行版本?

  本文不会评估各个Hadoop的发行版本。然而,下面会简短地介绍下主要的发行版本提供商。在不同的发行版本之间一般只有一些细微的差别,而提供商则将这些差别视为秘诀和自己产品的与众不同之处。下面的列表解释了这些差别:

  Cloudera:最成型的发行版本,拥有最多的部署案例。提供强大的部署、管理和监控工具。Cloudera开发并贡献了可实时处理大数据的Impala项目。

  Hortonworks:不拥有任何私有(非开源)修改地使用了100%开源Apache Hadoop的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。并且,它们的Stinger开创性地极大地优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsft Windows平台上本地运行。

  MapR:与竞争者相比,它使用了一些不同的概念,特别是为了获取更好的性能和易用性而支持本地Unix文件系统而不是HDFS(使用非开源的组件)。可以使用本地Unix命令来代替Hadoop命令。除此之外,MapR还凭借诸如快照、镜像或有状态的故障恢复之类的高可用性特性来与其他竞争者相区别。该公司也领导着Apache Drill项目,本项目是Google的Dremel的开源项目的重新实现,目的是在Hadoop数据上执行类似SQL的查询以提供实时处理。

  Amazon Elastic Map Reduce(EMR):区别于其他提供商的是,这是一个托管的解决方案,其运行在由Amazon Elastic Compute Cloud(Amazon EC2)和Amzon Simple Strorage Service(Amzon S3)组成的网络规模的基础设施之上。除了Amazon的发行版本之外,你也可以在EMR上使用MapR。临时集群是主要的使用情形。如果你需要一次性的或不常见的大数据处理,EMR可能会为你节省大笔开支。然而,这也存在不利之处。其只包含了Hadoop生态系统中Pig和Hive项目,在默认情况下不包含其他很多项目。并且,EMR是高度优化成与S3中的数据一起工作的,这种方式会有较高的延时并且不会定位位于你的计算节点上的数据。所以处于EMR上的文件IO相比于你自己的Hadoop集群或你的私有EC2集群来说会慢很多,并有更大的延时。

  上面的发行版本都能灵活地单独使用或是与不同的大数据套件组合使用。而这期间出现的一些其它的发行版本则不够灵活,会将你绑定至特定的软件栈和(或)硬件栈。比如EMC的Pivotal HD原生地融合了Greenplum的分析数据库,目的是为了在Hadoop,或Intel的Apache Hadoop发行版本之上提供实时SQL查询和卓越的性能,Intel的Apache Hadoop发行版本为固态驱动器进行了优化,这是其他Hadoop公司目前还没有的做法。

  所以,如果你的企业已经有了特定的供应方案栈,则一定要核查它支持哪个Hadoop发行版本。比如,如果你使用了Greeplum数据库,那么Pivotal就可能是一个完美的选择,而在其他情况下,可能更适合采取更加灵活的解决方案。例如,如果你已经使用了Talend ESB,并且你想使用TalenD Big Data来启动你的大数据项目,那么你可以选择你心仪的Hadoop发行版本,因为Talend并不依赖于Hadoop发行版本的某个特定提供商。

  为了做出正确的选择,请了解各个发行版本的概念并进行试用。请查证所提供的工具并分析企业版加上商业支持的总费用。在这之后,你就可以决定哪个发行版本是适合自己的。

  何时使用Hadoop发行版本?

  由于发行版本具有打包、工具和商业支持这些优点,所以在绝大多数使用情形下都应使用Hadoop的发行版本。使用普通的(原文为plan,应为plain)Apache Hadoop发布版本并在此基础之上构建自己的发行版本的情况是极少见的。你会要自己测试打包,构建自己的工具,并自己动手写补丁。其他一些人已经遇到了你将会遇到的同样问题。所以,请确信你有很好的理由不使用Hadoop发行版本。

  然而,就算是Hadoop发行版本也需要付出很大的努力。你还是需要为自己的MapReduce作业编写大量代码,并将你所有的不同数据源集成到Hadoop中。而这就是大数据套件的切入点。

  大数据套件

  你可以在Apache Hadoop或Hadoop发行版本之上使用一个大数据套件。大数据套件通常支持多个不同的Hadoop发行版本。然而,某些提供商实现了自己的Hadoop解决方案。无论哪种方式,大数据套件为了处理大数据而在发行版本上增加了几个更进一步的特性:

  工具:通常,大数据套件是建立像Eclipse之类的IDE之上。附加插件方便了大数据应用的开发。你可以在自己熟悉的开发环境之内创建、构建并部署大数据服务。

  建模:Apache Hadoop或Hadoop发行版本为Hadoop集群提供了基础设施。然而,你仍然要写一大堆很复杂的代码来构建自己的MapReduce程序。你可以使用普通的Java来编写这些代码,或者你也可以那些已经优化好的语言,比如PigLatin或Hive查询语言(HQL),它们生成MapReduce代码。大数据套件提供了图形化的工具来为你的大数据服务进行建模。所有需要的代码都是自动生成的。你只用配置你的作业(即定义某些参数)。这样实现大数据作业变得更容易和更有效率。

  代码生成:生成所有的代码。你不用编写、调试、分析和优化你的MapReduce代码。

  调度:需要调度和监控大数据作业的执行。你无需为了调度而编写cron作业或是其他代码。你可以很容易地使用大数据套件来定义和管理执行计划。

  集成:Hadoop需要集成所有不同类技术和产品的数据。除了文件和SQL数据库之外,你还要集成NoSQL数据库、诸如Twitter或Facebook这样的社交媒体、来自消息中间件的消息、或者来自类似于Salesforce或SAP的B2B产品的数据。通过提供从不同接口到Hadoop和后端的众多连接器,大数据套件为集成提供了很多帮助。你不用手工编写连接代码,你只需使用图形化的工具来集成并映射所有这些数据。集成能力通常也具有数据质量特性,比如数据清洗以提高导入数据的质量。

  大数据套件提供商

  大数据套件的数目在持续增长。你可以在几个开源和专有提供商之间选择。像IBM、Oracle、Microsoft等这样的大部分大软件提供商将某一类的大数据套件集成到自己的软件产品组合中。而绝大多数的这些厂商仅只支持某一个Hadoop发行版本,要么是自己的,要么和某个Hadoop发行版本提供商合作。

  从另外一方面来看,还有专注于数据处理的提供商可供选择。它们提供的产品可用于数据集成、数据质量、企业服务总线、业务流程管理和更进一步的集成组件。既有像Informatica这样的专有提供商,也有Talend或Pentaho这样的开源提供商。某些提供商不只支持某一个Hadoop发行版本,而是同时支持很多的。比如,就在撰写本文的时刻,Talend就可以和Apache Hadoop、Cloudera、Hortonworks、MapR、Amazon Elastic MapReduce或某个定制的自创发行版本(如使用EMC的Pivotal HD)一起使用。

  如何选择合适的大数据套件?

  本文不会评估各个大数据套件。当你选择大数据套件时,应考虑几个方面。下面这些应该可以帮助你为自己的大数据问题作出合适的抉择:

  简单性:亲自试用大数据套件。这也就意味着:安装它,将它连接到你的Hadoop安装,集成你的不同接口(文件、数据库、B2B等等),并最终建模、部署、执行一些大数据作业。自己来了解使用大数据套件的容易程度——仅让某个提供商的顾问来为你展示它是如何工作是远远不够的。亲自做一个概念验证。

  广泛性:是否该大数据套件支持广泛使用的开源标准——不只是Hadoop和它的生态系统,还有通过SOAP和REST web服务的数据集成等等。它是否开源,并能根据你的特定问题易于改变或扩展?是否存在一个含有文档、论坛、博客和交流会的大社区?

  特性:是否支持所有需要的特性?Hadoop的发行版本(如果你已经使用了某一个)?你想要使用的Hadoop生态系统的所有部分?你想要集成的所有接口、技术、产品?请注意过多的特性可能会大大增加复杂性和费用。所以请查证你是否真正需要一个非常重量级的解决方案。是否你真的需要它的所有特性?

  陷阱:请注意某些陷阱。某些大数据套件采用数据驱动的付费方式(“数据税”),也就是说,你得为自己处理的每个数据行付费。因为我们是在谈论大数据,所以这会变得非常昂贵。并不是所有的大数据套件都会生成本地Apache Hadoop代码,通常要在每个Hadoop集群的服务器上安装一个私有引擎,而这样就会解除对于软件提供商的独立性。还要考虑你使用大数据套件真正想做的事情。某些解决方案仅支持将Hadoop用于ETL来填充数据至数据仓库,而其他一些解决方案还提供了诸如后处理、转换或Hadoop集群上的大数据分析。ETL仅是Apache Hadoop和其生态系统的一种使用情形。

  决策树:框架vs发行版本vs套件

  现在,你了解了Hadoop不同选择之间的差异。最后, 让我们总结并讨论选择Apache Hadoop框架、Hadoop发行版本或大数据套件的场合。

  下面的“决策树”将帮助你选择合适的一种:

  Apache:

  学习并理解底层细节?

  专家?自己选择和配置?

  发行版本:

  容易的设置?

  初学(新手)?

  部署工具?

  需要商业支持?

  大数据套件:

  不同数据源集成?

  需要商业支持?

  代码生成?

  大数据作业的图形化调度?

  实现大数据处理(集成、操作、分析)?

  结论

  Hadoop安装有好几种选择。你可以只使用Apache Hadoop项目并从Hadoop生态系统中创建自己的发行版本。像Cloudera、Hortonworks或MapR这样的Hadoop发行版本提供商为了减少用户需要付出的工作,在Apache Hadoop之上添加了如工具、商业支持等特性。在Hadoop发行版本之上,为了使用如建模、代码生成、大数据作业调度、所有不同种类的数据源集成等附加特性,你可以使用一个大数据套件。一定要评估不同的选择来为自己的大数据项目做出正确的决策。

计算机专业介绍?

上面都是计算机处理信息、理解信息的例子。上个世纪,几个超前的前辈(图灵、冯诺依曼)搞了几个东西,使我们进入了信息时代,计算机已经融...
点击下载
热门文章
    确认删除?
    回到顶部