大数据学习之路
满满的都是干货。第一次创作,不喜勿喷~本文中不适合资深人士阅读,创作此文章只供学习交流,欢迎大家在评论区批评和指正。其中链接中的文章也会持续更新。大家觉得不错的话点个赞吧,鼓励我持续更新下去。不忘初心,砥砺向前(๑•̀ㅂ•́) ✧
下面这篇文章聊了聊我对大数据学习的一些感想,和一些学习方法。有兴趣的可以去看看
https://leidl.top/post/3d24dcf9
这篇文章我想聊聊我是怎么学的,奔的什么目的去学的?
大家都知道,学习要讲究一个目的,我为什么要学这个东西。通俗点说就是你得会学。不然你是学不明白的。就比如大数据中一个hadoop就够你学了,知识点很杂很散,我应该怎么找到适合自己的学习方法?应该学到什么程度才可以?如何更加有效率的学习?笔者自认为学的还可以,这里并不是代表我学了多少东西,学了多深的东西,而是我在有限的时间内收获了我想要的。打个比方经历过高考的人老师曾经肯定对你说过这样一句话“先做会的,不会的直接放过”这句话放在现在也很受用吧,学习的时间是有限的,最充裕的时候就是大学四年,但是我相信大部分人大学四年也没有谁像高中一样学下来的,哪怕高中的1/3都没有。如果你参加工作了,那么你更能感受到时间是非常宝贵的。不断学习是多么重要。所以如何有效的学习是非常有必要的。这方面笔者也一直在探索方法。
而我这篇文章的学习目的就是通过学一堆大数据组件去干项目。当然也不是学了这些就代表我有干项目的技术了。而是说你有一个门槛了,可以去学项目了,到时候项目中不会的再去研究学习,在项目中学知识,成长的可以更快。我也用这种模式是受益过的,也一直推崇这个学习方法。
不多比比了,直接开搞。首先学习大数据的话是需要一点Java底子的。比如hadoop就是Java写的,所以没有Java底子有很多东西是理解不了的。所以笔者建议没有基础的先去补基础。到什么程度呢,学完JavaSE吧,也就是学到servlet那块。在这也推荐一下学习Java的网站吧
我曾受益于此网站,觉得不错就推荐给大家。优点就是没广告,除了实战项目外都不要钱。笔者属于花钱党,上篇文章也说了,我对学习和版权这块不吝啬。好不好,你们说了算。适合小白学习。比较深的一些东西,像他后面那些框架讲解,中间件技术之类的也只是讲个皮毛,学不到什么东西。这网站建议大家看基础或者实战项目。对于小白来说足够了,也不用花钱。学到基础就可以了,回到主题,学这些只是让学习大数据更加顺滑。
首先,学大数据就一定离不开Linux,哈哈哈,梅开二度,没有Linux底子的建议去补Linux。到什么程度呢?起码基本命令你得知道。在这我就不推荐具体的网站了,主要是我没遇到过良心网站如果学的话我推荐去b站看视频学习,一搜一大把,播放量高的和最新发布结合一下去找一个就行。
有了Java基础和Linux底子后就可以开始大数据的学习了。大数据是什么?我为什么要学?干过Java就明白了,让你处理MySQL中的数据你写个程序就能搞定。那么我的数据有100个T呢。别说程序卡死。光存都有点费劲。像Google每日点击访问量那也是一个级别,怎么处理这么多的数据呢?这就是大数据出现的原因。为什么要学?两个理由:第一,必然趋势,稍微大点的公司都会涉及大数据,你不会怎么行,等淘汰吧。第二,钱挣得多,相同条件下,比Java高。别的没用的话我也就不说了,我还是喜欢实在的,能让人一下子听懂的。如果还想了解的就自己去搜搜吧。
整体学习路线
- 【必修】
- 安装VMware
- 使用伴侣(连接虚拟机的)
- 基础环境与常用软件搭建
- zookeeper
- hadoop
- Hbase
- Hive
- 【选修】
- oozie
- spark
- sentry
- 更新中…
安装VMware
第一件事情安装VMware。有这软件的就不说了,没有的评论,私我都可以。最好装一个pro版的设置虚拟网卡配置会有用。
选择发行版:只是单纯的学习那么首选centos7。镜像自己搞,或者问我要。我也只是百度网盘链接,没会员的还是自己找个吧。
虚拟机搭建:大部分人都是8G内存或者16G。推荐部署3台(将来集群搭建)看自己电脑内存分配。
推荐最小安装,黑框框敲就行了,这也是Linux的魅力。
使用伴侣
在安装完三台虚拟机后,需要使用伴侣。这里推荐Xshell(需破解),本人用的FinalShell(免费)
- 使用伴侣原因:用自带的不好编辑,不能复制粘贴(最小安装)。将来也不可能直接去操作服务器,都是采用远程连接的方式。
- 使用说明:安装完客户端后采用SSH连接就可以了,以FinalShell举例。别的也类似。
填入红框信息
基础环境与常用软件搭建
这时候会遇到一个问题,刚安装的虚拟机网卡是关闭的,导致没有主机IP,需要重启网卡
1 | service network restart |
查看ens33网卡的ip地址,连接即可
1 | ip -a |
至于Linux的一些基本环境配置与部署请看这篇文章
还有一些零碎的组件,比如说SSH免密操作,JDK,MySQL,tomcat。需要的直接看链接
[Linux下MySQL5.7的tar方式安装](https://leidl.top/post/fe1f88a1
Zookeeper
简称ZK,字面意思是动物园管理。而Hadoop各大组件,比如Hive是蜜蜂,Hbase是鲸鱼等,就是管理Hadoop组件的。为什么要学它,Hadoop组件那么多,总有人去管,去协调它们,它的作用就是进行分布式协调。
hadoop
看技术的直接看笔记,这里聊一聊hadoop的题外话
首先是创始人
Doug Cutting
这个人干过什么?
- Lucene是他做的,Lucene是Java写的,目标是为各种中小型应用软件加入全文检索功能,好用且开源 2001年被apache收录
- 04年基于GFS(Google file system),实现了分布式文件系统,命名为NDFS(N代表Nutch,在Lucene基础上写的,功能更强)
- 04年Google发表论文MapReduce,用于大规模计算
- 06年yahoo招安Doug Cutting,对NDFS和MapReduce进行了升级改造,并重新命名为hadoop
- 在Yahoo的工作期间,Cutting先后发明了Hive,Pig,HBase等
- 06年Google又发论文BigTable,Doug Cutting引入了BigTable,并命名为HBase
- 08年hadoop成为apache的顶级项目
为什么叫hadoop?
这个名字不是一个缩写,而是一个虚构的名字。Doug Cutting解释hadoop的得名 :“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。
为什么学hadoop?
就跟你要盖房子需要打地基一样,你说你学习大数据Kafka我没学过这个不打紧,但是你要是hadoop都不学,那你真的研究大数据也就没什么意思了。那就跟你出去吹牛逼说我Spring框架用的多6,最后你对人家说我连JavaSE都没学过,那谁信你学过Java。前面说这么多可见hadoop在大数据中的地位至关重要,hadoop是大数据技术的基础,对hadoop基础知识的掌握的扎实程度,会决定在大数据技术道路上走多远。
—8.3—
好久时间没更了,我去更隔壁Java专栏的spring boot一个小项目了,其中包括对hdfs健康信息展现,也就是50070展示的那些数据,感兴趣的可以看下
接下来说Hbase
看嘛子,我就是存东西的
看图,一个大鲸鱼,鲸鱼突出一个字,那就是大,可以将鲸鱼看作一个数据库,肚子里大量的海水看作海量的数据这样的话就很形象了。学习MySQL的都知道,它就是一个数据库,Hbase也一样,只不过Hbase存的是海量的数据。
Hive
这个小黄蜂是什么?它就是构建在Hadoop hdfs上的数据仓库,有人可能会说了,数据仓库是什么,与刚才Hbase什么关系,Hbase不也是基于HDFS的吗,学懵了。。。怎么说呢,数据仓库 实际上还是一个数据库,严格来说又不是一个数据库。说人话就是数据库为了响应时间读写都要干但是对于大量的读是支持不足的,而数据仓库是为了吞吐量,重点在于查询
限制
Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。
HBase查询是通过特定的语言来编写的,学完Hbase的都体会到了,语言是真的难用,这种语言需要重新学习。Hive就是类SQL,学过MySQL的都很熟悉,都可以进行编写。
适用场景
Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。
Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。
还是不大懂的看笔记吧
———8.4———–
下面这些就是量力而行了,因为本人也不是了解的特别透彻,就提一嘴吧,笔记比较少,这些或许对你们比较重要那就网上在看看,资料还是挺多的
oozie
看一眼官方声明吧
不要问我为什么是中文的,这是我翻译出来的
oozie(翻译过来就是训象人)谁是大象,hadoop是大象,可以拉上去看看图,就是负责管理Hadoop的,管理什么?管理hadoop作业,进行作业协调。他本质上就是一个作业协调工具。不知道装上有什么用,虽然我装了,也就敲了几个命令。我就不写了
spark
学过MapReduce都知道,它是基于文件的数据读取的IO开销非常大,而且也慢,而spark基于内存的计算比MR快100倍(官网说的)推荐学习spark的学下scala语言,因为spark就是scala写的。
sentry
sentry分两个,当时我学的时候学了半天docker的…我真T了。咱主要还是说hadoop的sentry
Sentry 是Cloudera公司发布的一个Hadoop开源组件,它提供细粒度基于角色的安全控制
。。。我也不想写这块了,没用到过,我们公司要求稍微看了下,过了过了。
下次更docker
————————– 9/3 ———————————————————
写到最后:好些日子没更了。主要是重心偏移了,公司也用的不多。但我以后还会向这边靠拢,也算打了点基础吧,暂时不更了,如果我接触到这块我还会继续更新。我会在其他方面继续更新文章,持续更新各种干货