写给大数据开发初学者的话

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

导读:

第一章:初识Hadoop
第二章:更高效的WordCount
第三章:把别处的数据搞到Hadoop上
第四章:把Hadoop上的数据搞到别处去
第五章:快一点吧,我的SQL
第六章:一夫多妻制
第七章:越来越多的分析任务
第八章:我的数据要实时
第九章:我的数据要对外
第十章:牛逼高大上的机器学习

经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高。。。。。。。如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统、硬件、网络、服务器感兴趣?是软件专业,对软件开发、编程、写代码感兴趣?还是数学、统计学专业,对数据和数字特别感兴趣。。
其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控、大数据开发/设计/架构、数据分析/挖掘。请不要问我哪个容易,哪个前景好,哪个钱多。
先扯一下大数据的4V特征:

  1. 数据量大,TB->PB
  2. 数据类型繁多,结构化、非结构化文本、日志、视频、图片、地理位置等;
  3. 商业价值高,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来;
  4. 处理时效性高,海量数据的处理需求不再局限在离线计算当中。

 

现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的:
文件存储:Hadoop HDFS、Tachyon、KFS
离线计算:Hadoop MapReduce、Spark
流式、实时计算:Storm、Spark Streaming、S4、Heron
K-V、NOSQL数据库:HBase、Redis、MongoDB
资源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分布式协调服务:Zookeeper
集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
数据挖掘、机器学习:Mahout、Spark MLLib
数据同步:Sqoop
任务调度:Oozie
……

 

眼花了吧,上面的有30多种吧,别说精通了,全部都会使用的,估计也没几个。
就我个人而言,主要经验是在第二个方向(开发/设计/架构),且听听我的建议吧。

第一章:初识Hadoop

1.1 学会百度与Google

不论遇到什么问题,先试试搜索并自己解决。
Google首选,翻不过去的,就用百度吧。

1.2 参考资料首选官方文档

特别是对于入门来说,官方文档永远是首选文档。
相信搞这块的大多是文化人,英文凑合就行,实在看不下去的,请参考第一步。

1.3 先让Hadoop跑起来

Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。

关于Hadoop,你至少需要搞清楚以下是什么:

  1. Hadoop 1.0、Hadoop 2.0
  2. MapReduce、HDFS
  3. NameNode、DataNode
  4. JobTracker、TaskTracker
  5. Yarn、ResourceManager、NodeManager

自己搭建Hadoop,请使用第一步和第二步,能让它跑起来就行。
建议先使用安装包命令行安装,不要使用管理工具安装。
另外:Hadoop1.0知道它就行了,现在都用Hadoop 2.0.

1.4 试试使用Hadoop

HDFS目录操作命令;
上传、下载文件命令;
提交运行MapReduce示例程序;
打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。
知道Hadoop的系统日志在哪里。

1.5 你该了解它们的原理了

MapReduce:如何分而治之;
HDFS:数据到底在哪里,什么是副本;
Yarn到底是什么,它能干什么;
NameNode到底在干些什么;
ResourceManager到底在干些什么;

1.6 自己写一个MapReduce程序

请仿照WordCount例子,自己写一个(照抄也行)WordCount程序,
打包并提交到Hadoop运行。
你不会Java?Shell、Python都可以,有个东西叫Hadoop Streaming。


如果你认真完成了以上几步,恭喜你,你的一只脚已经进来了。


 

第二章:更高效的WordCount

2.1 学点SQL吧

你知道数据库吗?你会写SQL吗?
如果不会,请学点SQL吧。

2.2 SQL版WordCount

在1.6中,你写(或者抄)的WordCount一共有几行代码?
给你看看我的:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;

这便是SQL的魅力,编程需要几十行,甚至上百行代码,我这一句就搞定;使用SQL处理分析Hadoop上的数据,方便、高效、易上手、更是趋势。不论是离线计算还是实时计算,越来越多的大数据处理框架都在积极提供SQL接口。

2.3 SQL On Hadoop之Hive

什么是Hive?官方给的解释是:
The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

为什么说Hive是数据仓库工具,而不是数据库工具呢?有的朋友可能不知道数据仓库,数据仓库是逻辑上的概念,底层使用的是数据库,数据仓库中的数据有这两个特点:最全的历史数据(海量)、相对稳定的;所谓相对稳定,指的是数据仓库不同于业务系统数据库,数据经常会被更新,数据一旦进入数据仓库,很少会被更新和删除,只会被大量查询。而Hive,也是具备这两个特点,因此,Hive适合做海量数据的数据仓库工具,而不是数据库工具。

2.4 安装配置Hive

请参考1.1 和 1.2 完成Hive的安装配置。可以正常进入Hive命令行。

2.5 试试使用Hive

请参考1.1 和 1.2 ,在Hive中创建wordcount表,并运行2.2中的SQL语句。
在Hadoop WEB界面中找到刚才运行的SQL任务。
看SQL查询结果是否和1.4中MapReduce中的结果一致。

2.6 Hive是怎么工作的

明明写的是SQL,为什么Hadoop WEB界面中看到的是MapReduce任务?

2.7 学会Hive的基本命令

创建、删除表;
加载数据到表;
下载Hive表的数据;
请参考1.2,学习更多关于Hive的语法和命令。


如果你认真完成了以上几步,恭喜你,你的半条腿已经进来了。


 写给大数据开发初学者的话

 

写给大数据开发初学者的话2

 

第三章:把别处的数据搞到Hadoop上

第四章:把Hadoop上的数据搞到别处去

写给大数据开发初学者的话3

第五章:快一点吧,我的SQL

第六章:一夫多妻制

写给大数据开发初学者的话4

第七章:越来越多的分析任务

第八章:我的数据要实时

写给大数据开发初学者的话5

第九章:我的数据要对外

第十章:牛逼高大上的机器学习

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018年7月份,python上传自己的包库到pypi官网的方法

最近pypi官网进行了更新,老的上传网址作废了。记录下上传到pypi的方法 0、去pypi官网注册账号,没账号是不可能上传的,想想也是那不乱套了吗,注册后会收到一个邮件需要点击然后重新登录 1、目录就是这样 ,我要上传muli…

linux系统C语言学习总结

引言   尽管 C 语言问世已近 30 年,但它的魅力仍未减退。C 语言继续吸引着众多的开发者,他们为了编写、移植或维护应用程序而必须学习新技能。   本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的。希望对您的学习和工作有…

redis 删除操作

Redis 键(key) Redis 键命令用于管理 redis 的键。 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上实例中 DEL 是…

写给大数据开发初学者的话2

见 : http://lxw1234.com/archives/2016/11/782.htm 如果你已经按照《写给大数据开发初学者的话》中第一章和第二章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识点: 0和Hadoop2.0的区别;MapReduce的原理(还是那个…

Pandas的结构和应用

Pandas处理以下三个数据结构 - 系列(Series)----一维ndarray   特点:带有标签,可以使用标签作为索引,大小不能改变,内部数据可以改变。 属性:与NumPy类似,多了一个轴标签axis lables 数据…

JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

题目 Description “那么真的有果尔德施坦因这样一个人?”他问道。 “是啊,有这样一个人,他还活着。至于在哪里,我就不知道了。” “那么那个密谋——那个组织?这是真的吗?不是秘密警察的捏造吧?” “不是,这是真的。我们管…

python 中如何判断list中是否包含某个元素

在python中可以通过in和not in关键字来判读一个list中是否包含一个元素 theList [‘a’,’b’,’c’] if ‘a’ in theList: print ‘a in the list’ if ‘d’ not in theList: print ‘d is not in the list’

时间即财富:创业者浪费精力的八个错误

导读:本文作者Jeff Miller是美食网页应用Punchfork的创始人,同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点,告诉读者在创业初期应该学会选择,因为在创业初…

写给大数据开发初学者的话3

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 如果你已经按照《写给大数据开发初学者的话2》中第三章和第四章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识…

十五周二次课

18.6 负载均衡集群介绍 主流开源软件LVS、keepalived、haproxy、nginx等其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用keepalived的负载均衡功能其实就是lvslvs这种4层的负…

LeetCode--171--Excel表列序号

问题描述: 给定一个Excel表格中的列名称,返回其相应的列序号。 例如, A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1: 输入: "A" 输出: 1示例 2: 输入: "AB" 输出: 28示例 3: 输入: "…

中国历代王朝大排名

中国自秦以降,一共出过九个大王朝,它们是:秦、汉、晋、隋、唐、宋、元、明、清。另外,还出过五十几个小王朝,它们是: 三国时的魏、蜀、吴,共三个; [ 转自铁血社区 http://bbs.tiexue…

写给大数据开发初学者的话4

见:http://lxw1234.com/archives/2016/11/795.htm 如果你已经按照《写给大数据开发初学者的话3》中第五章和第六章的流程认真完整的走了一遍,那么你应该已经具备以下技能和知识点: 为什么Spark比MapReduce快。使用SparkSQL代替Hive&#xff…

TPS及计算方法

TPS (transaction per second)代表每秒执行的事务数量,可基于测试周期内完成的事务数量计算得出。例如,用户每分钟执行6个事务,TPS为6 / 60s 0.10 TPS。同时我们会知道事务的响应时间(或节拍),以此例,60秒完成6个事务…

域名解析服务之DNS查询类型

在实际应用中DNS查询主要分为两种方式查询:1.递归查询;2.迭代查询 一般情况下:为了减少资源的消耗,网络中客户端与所属的本地DNS服务器查询方式通常为递归查询,本地DNS服务器与外部的公共DNS服务器间的查询方式为迭代查…

MFC Ribbon界面设计

Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏 MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面好看 看下面的一个界面,是VC2010示例里的 看到它与默认Ribbon样式的区别: 工…

互联网手机躁动:“周大炮”追逐“雷布斯”

摘要:周鸿祎选择非自有品牌补贴,可能是看到了小米初期的艰难,也想追求速度,绕开自制手机终端环节。于小米而言,需要解决后续机型承接、持续稳定提升产能;对360而言,需要投入巨量补贴资金&#x…

获取泛型T的ClassT clazz

在我们搭建框架中往往会用到泛型,我们知道泛型的好处是在编译的时候检查类型安全&#xff0c;并且所有的强制转换都是自动和隐式的&#xff0c;代码的重用率高 然而有时候<method>的入参并不能直接强制转换成泛型的类型,比如说下面这段代码&#xff1a; 很明显String 类…

写给大数据开发初学者的话5

见&#xff1a;http://lxw1234.com/archives/2017/01/832.htm 至此&#xff0c;你的大数据平台底层架构已经成型了&#xff0c;其中包括了数据采集、数据存储与计算&#xff08;离线和实时&#xff09;、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提…

3.spring boot Controller获取请求参数的值

2019独角兽企业重金招聘Python工程师标准>>> 1.获取连接中的参数,使用倒的关键词PathVariable RestController public class HelloController {RequestMapping(value "/hello/{id}",method RequestMethod.GET)public String index(PathVariable("i…