㈠ 大数据学习一般都学什么
您好,大数据学习一般分为6个阶段
第一阶段
javaSE基础核心
第二阶段
数据库关键技术
第三阶段
大数据基础核心
第四阶段
Spark生态体系框架&大数据精选项目
第五阶段
Spark生态体系框架&企业无缝对接项目
第六阶段
Flink流式数据处理框架
大数据是最近几年新兴的专业,发展的前景是非常好的,选择大数据是没有错的!
㈡ 大数据专业主要学什么
1. Java编程技术
Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具。
2.Linux命令
对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制。
3. Hadoop
Hadoop是大数据开发的重要框架,其核心是HDFS和MapRece,HDFS为海量的数据提供了存储,MapRece为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!
4. Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapRece任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。
5. Avro与Protobuf
Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。
6.ZooKeeper
ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。
7. HBase
HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。
8.phoenix
phoenix是用Java编写的基于JDBC
API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。
9. Redis
Redis是一个key-value存储系统,其出现很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Java,C/C++,C#,php,JavaScript,Perl,Object-C,python,Ruby,Erlang等客户端,使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。
10. Flume
Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。大数据开发需掌握其安装、配置以及相关使用方法。
11. SSM
SSM框架是由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。大数据开发需分别掌握Spring、SpringMVC、MyBatis三种框架的同时,再使用SSM进行整合操作。
12.Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,其在大数据开发应用上的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。大数据开发需掌握Kafka架构原理及各组件的作用和使用方法及相关功能的实现!
13.Scala
Scala是一门多范式的编程语言,大数据开发重要框架Spark是采用Scala语言设计的,想要学好Spark框架,拥有Scala基础是必不可少的,因此,大数据开发需掌握Scala编程基础知识!
14.Spark
Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、Spark
RDD、spark job部署与资源分配、Spark shuffle、Spark内存管理、Spark广播变量、Spark SQL、Spark
Streaming以及Spark ML等相关知识。
15.Azkaban
Azkaban是一个批量工作流任务调度器,可用于在一个工作流内以一个特定的顺序运行一组工作和流程,可以利用Azkaban来完成大数据的任务调度,大数据开发需掌握Azkaban的相关配置及语法规则。
16.Python与数据分析
Python是面向对象的编程语言,拥有丰富的库,使用简单,应用广泛,在大数据领域也有所应用,主要可用于数据采集、数据分析以及数据可视化等,因此,大数据开发需学习一定的Python知识。
㈢ 大型的 PHP应用 通常使用什么应用做 消息队列 的
一、消息队列概述
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
二、消息队列应用场景
以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。
2.1异步处理
场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。
(1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。(架构KKQ:466097527,欢迎加入)
(2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。
假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。
因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100)。
小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢?
引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下:
按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。因此架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍。
2.2应用解耦
场景说明:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。如下图:
传统模式的缺点:
1) 假如库存系统无法访问,则订单减库存将失败,从而导致订单失败;
2) 订单系统与库存系统耦合;
如何解决以上问题呢?引入应用消息队列后的方案,如下图:
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。
假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。
2.3流量削锋
流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。
应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。
可以控制活动的人数;
可以缓解短时间内高流量压垮应用;
用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面;
秒杀业务根据消息队列中的请求信息,再做后续处理。
2.4日志处理
日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。架构简化如下:
日志采集客户端,负责日志数据采集,定时写受写入Kafka队列;
Kafka消息队列,负责日志数据的接收,存储和转发;
日志处理应用:订阅并消费kafka队列中的日志数据;
以下是新浪kafka日志处理应用案例:
(1)Kafka:接收用户日志的消息队列。
(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch。
(3)Elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。
(4)Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选择ELK stack的重要原因。
2.5消息通讯
消息通讯是指,消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等。
点对点通讯:
客户端A和客户端B使用同一队列,进行消息通讯。
聊天室通讯:
客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果。
以上实际是消息队列的两种消息模式,点对点或发布订阅模式。模型为示意图,供参考。
三、消息中间件示例
3.1电商系统
消息队列采用高可用,可持久化的消息中间件。比如Active MQ,Rabbit MQ,Rocket Mq。(1)应用将主干逻辑处理完成后,写入消息队列。消息发送是否成功可以开启消息的确认模式。(消息队列返回消息接收成功状态后,应用再返回,这样保障消息的完整性)
(2)扩展流程(发短信,配送处理)订阅队列消息。采用推或拉的方式获取消息并处理。
(3)消息将应用解耦的同时,带来了数据一致性问题,可以采用最终一致性方式解决。比如主数据写入数据库,扩展应用根据消息队列,并结合数据库方式实现基于消息队列的后续处理。
3.2日志收集系统
分为Zookeeper注册中心,日志收集客户端,Kafka集群和Storm集群(OtherApp)四部分组成。
Zookeeper注册中心,提出负载均衡和地址查找服务;
日志收集客户端,用于采集应用系统的日志,并将数据推送到kafka队列;
四、JMS消息服务
讲消息队列就不得不提JMS 。JMS(Java Message Service,Java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
在EJB架构中,有消息bean可以无缝的与JM消息服务集成。在J2EE架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。
4.1消息模型
在JMS标准中,有两种消息模型P2P(Point to Point),Publish/Subscribe(Pub/Sub)。
4.1.1 P2P模式
P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。
P2P的特点
每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列
接收者在成功接收消息之后需向队列应答成功
如果希望发送的每个消息都会被成功处理的话,那么需要P2P模式。(架构KKQ:466097527,欢迎加入)
4.1.2 Pub/sub模式
包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
Pub/Sub的特点
每个消息可以有多个消费者
发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
为了消费消息,订阅者必须保持运行的状态。
为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。
4.2消息消费
在JMS中,消息的产生和消费都是异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。
(1)同步
订阅者或接收者通过receive方法来接收消息,receive方法在接收到消息之前(或超时之前)将一直阻塞;
(2)异步
订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法。
JNDI:Java命名和目录接口,是一种标准的Java命名系统接口。可以在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回资源连接建立所必须的信息。
JNDI在JMS中起到查找和访问发送目标或消息来源的作用。(架构KKQ:466097527,欢迎加入)
4.3JMS编程模型
(1) ConnectionFactory
创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFactory两种。可以通过JNDI来查找ConnectionFactory对象。
(2) Destination
Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列或主题(即消息来源)。
所以,Destination实际上就是两种类型的对象:Queue、Topic可以通过JNDI来查找Destination。
(3) Connection
Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个Session。跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。
(4) Session
Session是操作消息的接口。可以通过session创建生产者、消费者、消息等。Session提供了事务的功能。当需要使用session发送/接收多个消息时,可以将这些发送/接收动作放到一个事务中。同样,也分QueueSession和TopicSession。
(5) 消息的生产者
消息生产者由Session创建,并用于将消息发送到Destination。同样,消息生产者分两种类型:QueueSender和TopicPublisher。可以调用消息生产者的方法(send或publish方法)发送消息。
(6) 消息消费者
消息消费者由Session创建,用于接收被发送到Destination的消息。两种类型:QueueReceiver和TopicSubscriber。可分别通过session的createReceiver(Queue)或createSubscriber(Topic)来创建。当然,也可以session的creatDurableSubscriber方法来创建持久化的订阅者。
(7) MessageListener
消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一种MessageListener。
深入学习JMS对掌握JAVA架构,EJB架构有很好的帮助,消息中间件也是大型分布式系统必须的组件。本次分享主要做全局性介绍,具体的深入需要大家学习,实践,总结,领会。
五、常用消息队列
一般商用的容器,比如WebLogic,JBoss,都支持JMS标准,开发上很方便。但免费的比如Tomcat,Jetty等则需要使用第三方的消息中间件。本部分内容介绍常用的消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)以及他们的特点。
5.1 ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
ActiveMQ特性如下:
⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
⒊ 对spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
⒌ 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通过JDBC和journal提供高速的消息持久化
⒎ 从设计上保证了高性能的集群,客户端-服务器,点对点
⒏ 支持Ajax
⒐ 支持与Axis的整合
⒑ 可以很容易得调用内嵌JMS provider,进行测试
5.2 RabbitMQ
RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
几个重要概念:
Broker:简单来说就是消息队列服务器实体。
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
procer:消息生产者,就是投递消息的程序。
consumer:消息消费者,就是接受消息的程序。
channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
消息队列的使用过程,如下:
(1)客户端连接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间建立好绑定关系。
(5)客户端投递消息到exchange。
exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。
5.3 ZeroMQ
号称史上最快的消息队列,它实际类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。
引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”
特点是:
高性能,非持久化;
跨平台:支持Linux、Windows、OS X等。
多语言支持; C、C++、Java、.NET、Python等30多种开发语言。
可单独部署或集成到应用中使用;
可作为Socket通信库使用。
与RabbitMQ相比,ZMQ并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,更像一个底层的网络通讯库,在Socket API之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的API接口。支持“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”三种基本模型和扩展模型。
ZeroMQ高性能设计要点:
1、无锁的队列模型
对于跨线程间的交互(用户端和session)之间的数据交换通道pipe,采用无锁的队列算法CAS;在pipe两端注册有异步事件,在读或者写消息到pipe的时,会自动触发读写事件。
2、批量处理的算法
对于传统的消息处理,每个消息在发送和接收的时候,都需要系统的调用,这样对于大量的消息,系统的开销比较大,zeroMQ对于批量的消息,进行了适应性的优化,可以批量的接收和发送消息。
3、多核下的线程绑定,无须CPU切换
区别于传统的多线程并发模式,信号量或者临界区, zeroMQ充分利用多核的优势,每个核绑定运行一个工作者线程,避免多线程之间的CPU切换开销。
5.4 Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。
Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。(文件追加的方式写入数据,过期的数据定期删除)
高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
支持通过Kafka服务器和消费机集群来分区消息。
支持Hadoop并行数据加载。
Kafka相关概念
Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker[5]
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
Partition
Parition是物理上的概念,每个Topic包含一个或多个Partition.
Procer
负责发布消息到Kafka broker
Consumer
消息消费者,向Kafka broker读取消息的客户端。
Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
一般应用在大数据日志处理或对实时性(少量延迟),可靠性(少量丢数据)要求稍低的场景使用。
㈣ 大数据工程师做什么
大数据工程师做什么?需要具备什么能力?
大数据是眼下非常时髦的技术名词,与此同时自然也催生出了一些与大数据处理相关的职业,通过对数据的挖掘分析来影响企业的商业决策。
这群人在国外被叫做数据科学家(Data Scientist),这个头衔最早由D.J.Pati和Jeff Hammerbacher于2008年提出,他们后来分别成为了领英(LinkedIn)和Facebook数据科学团队的负责人。而数据科学家这个职位目前也已经在美国传统的电信、零售、金融、制造、物流、医疗、教育等行业里开始创造价值。
不过在国内,大数据的应用才刚刚萌芽,人才市场还不那么成熟,“你很难期望有一个全才来完成整个链条上的所有环节。更多公司会根据自己已有的资源和短板,招聘能和现有团队互补的人才。”领英(LinkedIn)中国商务分析及战略总监王昱尧对《第一财经周刊》说。
于是每家公司对大数据工作的要求不尽相同:有的强调数据库编程、有的突出应用数学和统计学知识、有的则要求有咨询公司或投行相关的经验、有些是希望能找到懂得产品和市场的应用型人才。正因为如此,很多公司会针对自己的业务类型和团队分工,给这群与大数据打交道的人一些新的头衔和定义:数据挖掘工程师、大数据专家、数据研究员、用户分析专家等都是经常在国内公司里出现的Title,我们将其统称为“大数据工程师”。
王昱尧认为,在一个成熟的数据驱动型公司,“大数据工程师”往往是一个团队,它意味着从数据的收集、整理展现、分析和商业洞察、以至于市场转化的全过程。这个团队中可能包括数据工程师、分析师、产品专员、市场专员和商业决策者等角色,共同完成从原始数据到商业价值的转换—概括来讲,这是一个支持企业做出商业决策、发掘商业模式的重要群体。
由于国内的大数据工作还处在一个有待开发的阶段,因此能从其中挖掘出多少价值完全取决于工程师的个人能力。已经身处这个行业的专家给出了一些人才需求的大体框架,包括要有计算机编码能力、数学及统计学相关背景,当然如果能对一些特定领域或行业有比较深入的了解,对于其快速判断并抓准关键因素则更有帮助。
虽然对于一些大公司来说,拥有硕博学历的公司人是比较好的选择,不过阿里巴巴集团研究员薛贵荣强调,学历并不是最主要的因素,能有大规模处理数据的经验并且有喜欢在数据海洋中寻宝的好奇心会更适合这个工作。
除此之外,一个优秀的大数据工程师要具备一定的逻辑分析能力,并能迅速定位某个商业问题的关键属性和决定因素。“他得知道什么是相关的,哪个是重要的,使用什么样的数据是最有价值的,如何快速找到每个业务最核心的需求。”联合国网络大数据联合实验室数据科学家沈志勇说。学习能力能帮助大数据工程师快速适应不同的项目,并在短时间内成为这个领域的数据专家;沟通能力则能让他们的工作开展地更顺利,因为大数据工程师的工作主要分为两种方式:由市场部驱动和由数据分析部门驱动,前者需要常常向产品经理了解开发需求,后者则需要找运营部了解数据模型实际转化的情况。
你可以将以上这些要求看做是成为大数据工程师的努力方向,因为根据万宝瑞华管理合伙人颜莉萍的观察,这是一个很大的人才缺口。目前国内的大数据应用多集中在互联网领域,有超过56%的企业在筹备发展大数据研究,“未来5年,94%的公司都会需要数据科学家。”颜莉萍说。因此她也建议一些原本从事与数据工作相关的公司人可以考虑转型。
本期《第一财经周刊》采访了BAT这3家国内互联网公司,以及相关领域的人力资源专家,他们从职场角度为我们解读如何成为大数据工程师以及这类岗位的职场现状。
A 大数据工程师做什么?
用阿里巴巴集团研究员薛贵荣的话来说,大数据工程师就是一群“玩数据”的人,玩出数据的商业价值,让数据变成生产力。大数据和传统数据的最大区别在于,它是在线的、实时的,规模海量且形式不规整,无章法可循,因此“会玩”这些数据的人就很重要。
沈志勇认为如果把大数据想象成一座不停累积的矿山,那么大数据工程师的工作就是,“第一步,定位并抽取信息所在的数据集,相当于探矿和采矿。第二步,把它变成直接可以做判断的信息,相当于冶炼。最后是应用,把数据可视化等。”
因此分析历史、预测未来、优化选择,这是大数据工程师在“玩数据”时最重要的三大任务。通过这三个工作方向,他们帮助企业做出更好的商业决策。
找出过去事件的特征
大数据工程师一个很重要的工作,就是通过分析数据来找出过去事件的特征。比如,腾讯的数据团队正在搭建一个数据仓库,把公司所有网络平台上数量庞大、不规整的数据信息进行梳理,总结出可供查询的特征,来支持公司各类业务对数据的需求,包括广告投放、游戏开发、社交网络等。
找出过去事件的特征,最大的作用是可以帮助企业更好地认识消费者。通过分析用户以往的行为轨迹,就能够了解这个人,并预测他的行为。“你可以知道他是什么样的人、他的年纪、兴趣爱好,是不是互联网付费用户、喜欢玩什么类型的游戏,平常喜欢在网上做什么事情。”腾讯云计算有限公司北京研发中心总经理郑立峰对《第一财经周刊》说。下一步到了业务层面,就可以针对各类人群推荐相关服务,比如手游,或是基于不同特征和需求衍生出新的业务模式,比如微信的电影票业务。
预测未来可能发生的事情
通过引入关键因素,大数据工程师可以预测未来的消费趋势。在阿里妈妈的营销平台上,工程师正试图通过引入气象数据来帮助淘宝卖家做生意。“比如今年夏天不热,很可能某些产品就没有去年畅销,除了空调、电扇,背心、游泳衣等都可能会受其影响。那么我们就会建立气象数据和销售数据之间的关系,找到与之相关的品类,提前警示卖家周转库存。”薛贵荣说。
在网络,沈志勇支持“网络预测”部分产品的模型研发,试图用大数据为更广泛的人群服务。已经上线的包括世界杯预测、高考预测、景点预测等。以网络景点预测为例,大数据工程师需要收集所有可能影响一段时间内景点人流量的关键因素进行预测,并为全国各个景点未来的拥挤度分级—在接下来的若干天时间里,它究竟是畅通、拥挤,还是一般拥挤?
找出最优化的结果
根据不同企业的业务性质,大数据工程师可以通过数据分析来达到不同的目的。
以腾讯来说,郑立峰认为能反映大数据工程师工作的最简单直接的例子就是选项测试(AB Test),即帮助产品经理在A、B两个备选方案中做出选择。在过去,决策者只能依据经验进行判断,但如今大数据工程师可以通过大范围地实时测试—比如,在社交网络产品的例子中,让一半用户看到A界面,另一半使用B界面,观察统计一段时间内的点击率和转化率,以此帮助市场部做出最终选择。
作为电商的阿里巴巴,则希望通过大数据锁定精准的人群,帮助卖家做更好的营销。“我们更期待的是你能找到这样一批人,比起现有的用户,这些人对产品更感兴趣。”薛贵荣说。一个淘宝的实例是,某人参卖家原来推广的目标人群是产妇,但工程师通过挖掘数据之间的关联性后发现,针对孕妇群体投放的营销转化率更高。
B 需要具备的能力
数学及统计学相关的背景
就我们采访过的BAT三家互联网大公司来说,对于大数据工程师的要求都是希望是统计学和数学背景的硕士或博士学历。沈志勇认为,缺乏理论背景的数据工作者,更容易进入一个技能上的危险区域(Danger Zone)—一堆数字,按照不同的数据模型和算法总能捯饬出一些结果来,但如果你不知道那代表什么,就并不是真正有意义的结果,并且那样的结果还容易误导你。“只有具备一定的理论知识,才能理解模型、复用模型甚至创新模型,来解决实际问题。”沈志勇说。
计算机编码能力
实际开发能力和大规模的数据处理能力是作为大数据工程师的一些必备要素。“因为许多数据的价值来自于挖掘的过程,你必须亲自动手才能发现金子的价值。”郑立峰说。
举例来说,现在人们在社交网络上所产生的许多记录都是非结构化的数据,如何从这些毫无头绪的文字、语音、图像甚至视频中攫取有意义的信息就需要大数据工程师亲自挖掘。即使在某些团队中,大数据工程师的职责以商业分析为主,但也要熟悉计算机处理大数据的方式。
对特定应用领域或行业的知识
在颜莉萍看来,大数据工程师这个角色很重要的一点是,不能脱离市场,因为大数据只有和特定领域的应用结合起来才能产生价值。所以,在某个或多个垂直行业的经历能为应聘者积累对行业的认知,对于之后成为大数据工程师有很大帮助,因此这也是应聘这个岗位时较有说服力的加分项。
“他不能只是懂得数据,还要有商业头脑,不论对零售、医药、游戏还是旅游等行业,能就其中某些领域有一定的理解,最好还是与公司的业务方向一致的,”就此薛贵荣还打了个比方,“过去我们说一些奢侈品店员势利,看人一眼就知道买得起买不起,但这群人恰恰是有敏锐度的,我们认为他们是这个行业的专家。又比如对医疗行业了解的人,他在考虑医疗保险业务时,不仅会和人们医院看病的记录相关,也会考虑饮食数据,这些都是基于对该领域的了解。”
C 大数据工程师的职业发展
如何成为大数据工程师
由于目前大数据人才匮乏,对于公司来说,很难招聘到合适的人才—既要有高学历,同时最好还有大规模数据处理经验。因此很多企业会通过内部挖掘。
今年8月,阿里巴巴举办了一个大数据竞赛,把天猫平台上的数据拿出来,去除敏感问题后,放到云计算平台上交予7000多支队伍进行比赛,比赛分为内部赛和外部赛。“通过这个方式来激励内部员工,同时也发现外部人才,让各行业的大数据工程师涌现出来。”
颜莉萍建议,目前长期从事数据库管理、挖掘、编程工作的人,包括传统的量化分析师、Hadoop方面的工程师,以及任何在工作中需要通过数据来进行判断决策的管理者,比如某些领域的运营经理等,都可以尝试该职位,而各个领域的达人只要学会运用数据,也可以成为大数据工程师。
薪酬待遇
作为IT类职业中的“大熊猫”,大数据工程师的收入待遇可以说达到了同类的顶级。根据颜莉萍的观察,国内IT、通讯、行业招聘中,有10%都是和大数据相关的,且比例还在上升。颜莉萍表示,“大数据时代的到来很突然,在国内发展势头激进,而人才却非常有限,现在完全是供不应求的状况。”在美国,大数据工程师平均每年薪酬高达17.5万美元,而据了解,在国内顶尖互联网类公司,同一个级别大数据工程师的薪酬可能要比其他职位高20%至30%,且颇受企业重视。
职业发展路径
由于大数据人才数量较少,因此大多数公司的数据部门一般都是扁平化的层级模式,大致分为数据分析师、资深研究员、部门总监3个级别。大公司可能按照应用领域的维度来划分不同团队,而在小公司则需要身兼数职。有些特别强调大数据战略的互联网公司则会另设最高职位—如阿里巴巴的首席数据官。“这个职位的大部分人会往研究方向发展,成为重要数据战略人才。”颜莉萍说。另一方面,大数据工程师对商业和产品的理解,并不亚于业务部门员工,因此也可转向产品部或市场部,乃至上升为公司的高级管理层。
㈤ 男生学什么电脑技术赚钱
男生学什么电脑技术赚钱,要看你的基础和兴趣爱好以及能力了。电脑的应用面很广,哪个领域学精通了,都能赚到钱。基础好的,可以学编程和软件开发,基础弱一些的,可以学应用。例如图像处理,动画,3D设计建模等。有兴趣的,也可以学习组装和维修。这些都是可以赚到钱的。
㈥ 用hadoop搭建大数据平台,前端页面展示可以使用thinkphp吗,
我们公司数据分析清洗是python 页面展示是tp3
㈦ Web前端课程都学什么
前端开发则是网站的前台代码实现,包括基本的HTML和CSS以及JavaScript/ajax,最新的高级版本HTML5、CSS3,以及SVG等。
前端开发需要学习的技术
1 掌握基本web前端开发技术:HTML、CSS、JavaScript、DOM、BOM、AJAX等,而且要了解它们在不同浏览器上的兼容情况、渲染原理和存在的Bug
2 必须掌握网站性能优化、SEO和服务器端开发技术的基础知识
3 必须学会运用各种web前端开发与测试工具进行辅助开发
4 除了掌握技术层面的知识,还要掌握理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持等
5 未来web前端开发工程师还要研究HTML5、web视觉设计、网站配色、网站交互设计模式等相关技术
在互联网行业,前端有WEB前端、HTML前端等,随着互联网技术发展,就业方向也有很多。web前端的就业方向有web架构师、web前端工程师、HTML前端开发工程师、网页设计师等等。
HTML前端开发
与Web前端开发不同的是,使用HTML5不仅仅可以开发前端,还有网页游戏,手机APP,使用浏览器进行3D渲染等一系列建立在HTML5标准与搭载其标准浏览器上的开发,而未来可能会有更多的功能分支并入HTML5标准。web前端工程师
这个方向是目前从事Web前端开发的主要就业方向
Web架构师
薪资普遍比较高,技术要求高,掌握多种技能,包括:后端技术、DBA、Platform等等,甚至包括网站优化SEO技术。
数据方向
数据研发这个是在Web开发的基础上用数据附能,懂可视化的一定是有前端能力的,懂hadoop的一定java要熟悉,属于Web开发的拓展方向。
大前端方向
比如阿里,在大量实践rn和weex;由于公司内部安卓/ios式微,一定程度上,前端把ios和安卓收编了,统称大前端。
图形学方向
前端自然是与图形学有千丝万缕的联系,除了上面提到了可视化,还有相关3d引擎的开发工作。做这一行要求也非常高了,图形学相关的算法,3d引擎的开发,这都需要图形学相关知识。
㈧ 大数据就业方向是什么
大数据的就业方向
大数据主要有三个就业方向,大数据系统研发类人才、大数据应用开发类人才和大数据分析类人才。
在此三大方向中,各自的基础岗位一般为大数据系统研发工程师、大数据应用开发工程师和数据分析师。又可分为以下十大职位:
一、ETL研发
ETL研发,主要负责将分散的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
二、Hadoop开发
Hadoop的核心是HDFS和MapRece.HDFS提供了海量数据的存储,MapRece提供了对数据的计算。随着数据集规模不断增大,而传统BI的数据处理成本过高,企业对Hadoop及相关的廉价数据处理技术如Hive、HBase、MapRece、Pig等的需求将持续增长。
三、可视化(前端展现)工具开发
可视化开发就是在可视开发工具提供的图形用户界面上,通过操作界面元素,由可视开发工具自动生成应用软件。还可轻松跨越多个资源和层次连接您的所有数据,经过时间考验,完全可扩展的,功能丰富全面的可视化组件库为开发人员提供了功能完整并且简单易用的组件集合,以用来构建极其丰富的用户界面。
四、信息架构开发
大数据重新激发了主数据管理的热潮。充分开发利用企业数据并支持决策需要非常专业的技能。信息架构师必须了解如何定义和存档关键元素,确保以最有效的方式进行数据管理和利用。信息架构师的关键技能包括主数据管理、业务知识和数据建模等。
五、数据仓库研究
数据仓库的专家熟悉Teradata、Neteeza和Exadata等公司的大数据一体机。能够在这些一体机上完成数据集成、管理和性能优化等工作。
六、OLAP开发
OLAP在线联机分析开发者,负责将数据从关系型或非关系型数据源中抽取出来建立模型,然后创建数据访问的用户界面,提供高性能的预定义查询功能。
七、数据科学研究
数据科学家是分析师、艺术家的合体,需要具备多种交叉科学和商业技能。
八、数据预测(数据挖掘)分析
营销部门经常使用预测分析预测用户行为或锁定目标用户。预测分析开发者有些场景看上有有些类似数据科学家,即在企业历史数据的基础上通过假设来测试阈值并预测未来的表现。
九、企业数据管理
企业要提高数据质量必须考虑进行数据管理,并需要为此设立数据管家职位,这一职位的人员需要能够利用各种技术工具汇集企业周围的大量数据,并将数据清洗和规范化,将数据导入数据仓库中,成为一个可用的版本。然后,通过报表和分析技术,数据被切片、切块,并交付给成千上万的人。担当数据管家的人,需要保证市场数据的完整性,准确性,唯一性,真实性和不冗余。
十、数据安全研究
数据安全这一职位,主要负责企业内部大型服务器、存储、数据安全管理工作,并对网络、信息安全项目进行规划、设计和实施。数据安全研究员还需要具有较强的管理经验,具备运维管理方面的知识和能力,对企业传统业务有较深刻的理解,才能确保企业数据安全做到一丝不漏。
㈨ 大数据都有哪些就业方向
在大数据领域,相关专业的毕业生有着非常广泛的从业选择。从国防部、互联网创业公司到金融机构,从零售金融到互联网电商,从医疗制造到交通检测,都需要大数据项目来做创新驱动,对大数据的需求无处不在,其岗位报酬也非常丰厚。在硅谷,入门级的数据科学家的收入已经是6位数了(美元);在国内,以Hadoop开发工程师为例,Hadoop入门薪资已经达到了8K以上,工作1年可达到1.2W以上,具有2-3年工作经验的hadoop人才年薪可以达到 30万—50万。相关专业的毕业生可从事的具体岗位如下:
1.数据工程方向
毕业生能够从事基于计算机、移动互联网、电子信息、电子商务技术、电子金融、电子政务、军事等领域的Java大数据分布式程序开发、大数据集成平台的应用、开发等方面的高级技术人才,可在政府机关、房地产、银行、金融、移动互联网等领域从事各类Java大数据分布式开发、基于大数据平台的程序开发、数据可视化等相关工作,也可在IT领域从事计算机应用工作。
2.数据分析方向
毕业生能够从事基于计算机、移动互联网、电子信息、电子商务技术、电子金融、电子政务、军事等领域的大数据平台运维、流计算核心技术等方面的高级技术人才,可在政府机关、房地产、银行、金融、移动互联网等领域从事各类大数据平台运维、大数据分析、大数据挖掘等相关工作,也可在IT领域从事计算机应用工作。
㈩ hadoop适合asp.net php吗
不知道你具体想做啥,hadoop是数据分析软件,并不适合当做网页运行