搭建Hadoop伪分布式环境
写在前面前面对Hadoop进行了一个基础的学习,接下来开始学习如何安装Hadoop平台。这里使用VMware Workstation Pro、CentOS7.7、Hadoop使用CDH5.7版本。
本篇主要学习如何在VMware Workstation虚拟机上安装的CentOS系统上搭建Hadoop伪分布式环境。
注意关于VMware Workstation Pro和CentOS7.7的安装这里就跳过,假设现在已经成功在VMware Workstation Pro虚拟机上成功安装了CentOS7.7系统,那么接下来就正式进入Hadoop伪分布式环境搭建。
所谓伪分布式是指在一台机器上启动Hadoop需要的所有进程进行工作;而分布式是指在多台机器上都启动Hadoop,按照集群的规划在不同的机器上启动各自需要的Hadoop进程进行相互协调工作。
Hadoop伪分布式环境搭建CentOS系统上软件下载存放地址为/home/soft,软件安装地址为/envy。
Java安装请注意,推荐使用Oracle JDK,因此需要卸载CentOS默认安装的OpenJDK,操作步骤如下:(1)使用rpm - ...
Hadoop初识
写在前面前面学习了大数据相关的知识,本篇正式进入Hadoop的学习,里面涉及到的知识较多,需要好好复习。本篇文章主要内容如下:(1)Hadoop概述:介绍Hadoop是什么以及它能干什么;(2)Hadoop优势:与其他大数据框架进行对比学习;(3)Hadoop发展史:介绍Hadoop发行到现在经历的一些过程;(4)Hadoop核心组件:介绍Hadoop核心组件有哪些以及各自用处;(5)Hadoop发行版本选择:介绍Hadoop一些发行版的特点和优缺点,以及在工作中如何选择合适的发行版本;(6)Hadoop生态系统:介绍Hadoop的生态系统中的其他框架,以及它们适合的业务场景;(7)Hadoop企业案例:介绍几个使用Hadoop来实现的企业案例。
Hadoop概述Hadoop是Hadoop作者孩子的一个棕黄色玩具大象的名字。
Hadoop是一个开源的可靠的(reliable),可扩展的(scalable),分布式计算(distributed computing)框架。
Hadoop是Apache基金会下的一个分布式系统基础架构,主要包括分布式文件系统HDFS(Hadoop Distri ...
大数据概述
写在前面本套笔记使用环境CentOS7.7,Hadoop的版本为CDH5.7,开发工具使用IDEA2018.03。
机器学习、深度学习和人工智能都离不开大数据。大数据的生态圈有两个,一个是Hadoop生态圈,另一个是Spark生态圈。在本套快速入门笔记中,关于Hadoop会学习其三大核心组件的原理与使用,具体包括分布式文件系统HDFS、分布式资源调度YARN和分布式计算框架MapReduce。之后会在此基础上基于某网站的日志来进行Hadoop项目实战学习,主要分析该网站用户使用浏览器访问该网站的情况,可能A用户使用谷歌浏览器,B用户使用IE浏览器,C用户使用Firefox浏览器进行访问,我们需要做的就是基于用户访问日志来分析和统计不同浏览器的使用数量及占比情况。除了Hadoop项目实战之外,还会学习如何搭建Hadoop分布式集群,Hadoop集成Spring框架。
当然除了学习Hadoop,本套笔记中也会简单学习一些关于Spark、Flink和Beam的知识。尽管本套笔记主要学习的是Hadoop2.x相关内容,但是也会对Hadoop3新特性进行讲解。
大数据概述在大数据领域有两个非常经 ...
SSL配置、泛域名和静态服务
写在前面现在大部分网站都使用https协议,而不是传统的http,因此本篇就来学习如何使用Nginx配置网站HTTPS和如何将http重定向到https,同时也会学到如何进行泛域名路径分离和请求转发,静态服务的相关配置,这些都是企业日常开发过程中经常会遇到的情况。
Nginx配置网站HTTPSHTTPSHTTPS是超文本传输安全协议(英文为Hyper Text Transfer Protocol Secure,简称HTTPS)是超文本传输协议HTTP和SSL/TLS的组合,用以提供加密通信以及对网络服务器身份的鉴定。HTTPS连接通常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。请不要将HTTPS协议与在RFC2600中定义的安全超文本传输协议(S-HTTP)相混淆。
HTTPS目前已经是所有注重隐私和安全的网站的首选,随着技术的不断发展,HTTPS网站已经大面积创建了,个人和站长均可以自己动手搭建一个安全的加密网站。
第一步,创建本地SSL证书,依次执行如下命令:
1234// 创建存储文件目录mkdir -p /etc/nginx/ssl// 创建有效期为100年,加密算 ...
Nginx运行状态和NginxWebUI
写在前面开发者需要经常获悉Nginx的运行状态,以便进行更好的使用和维护。因此本篇首先来学习如何通过Nginx提供的ngx_http_stub_status_module模块来监控Nginx的运行状态,同时考虑到实际工作的便利性,这里还会学习如何使用NginxWebUI工具来通过网页方式配置Nginx。
Nginx状态信息这一部分其实应该在前面就应该学习的,但是放在这里学习也是可以。通过前面的学习,我们知道在Nginx模块中有一个ngx_http_stub_status_module模块,这个模块的主要功能就是记录Nginx的基本访问信息,可以让使用者随时掌握Nginx的工作状态。注意在编译的时候就必须增加这个模块,开发者可以使用nginx -V来检查在编译的时候是否添加了此模块:
1234[root@envythink vhost]# nginx -Vnginx version: nginx/1.17.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) configure arguments: --user=nginx --gr ...
Nginx文件访问控制、结构优化和适配移动端
写在前面在前面我们使用Nginx基于来源IP或者用户账号密码等信息来做用户访问控制,其实使用类似的原理还可以使用Nginx来实现根据扩展名来限制程序和文件的访问、禁止访问指定目录下的所有文件和目录(屏蔽某些目录)等配置功能。之后还会学习如何对Nginx程序结构进行优化,最后介绍如何适配PC或者移动设备。
根据扩展名来限制程序和文件的访问一般来说,现在很多网站都是以用户为中心的,不仅支持用户发布文本内容到服务器,甚至还支持用户发送图片、视频、文件等内容到服务器上,但是给用户开启上传功能是很危险的,极有可能带来重大问题。
接下来举一个简单的例子,使用Nginx禁止访问上传资源目录下的PHP、SHELL、PYTHON、JAVA、GO等程序文件,这样即使用户上传了木马文件也无法执行,可以提高系统的安全性。如下所示:
1234567891011location ~ ^/images/.*\.(php|php5|sh|py|java|go)$ { deny all;}location ~ ^/static/.*\.(php|php5|sh|py|java|go)$ { ...
Nginx防盗链、爬虫和虚拟目录
写在前面前面学习的都是一些比较枯燥的内容,接下来学习一下较为有趣的配置,如使用Nginx来设置防盗链、防爬虫和虚拟目录等,学习和掌握这些有趣的知识可以提升自己的综合能力。
防盗链为什么需要防盗链?现在随着自媒体的发展,很多人开始以博流量为由,各种复制别人发布的文章,更有甚至将其标为原创来盗取他人的劳动成果,因此防盗链的设置显得尤为重要。
一般来说,当开发者对该网站做好防盗链之后,其他网站盗链本站的图片就会全部失效无法显示,但是如果用户是通过浏览器来访问本网站或者直接访问图片地址时,这些图片依旧是可以正常显示,且可以右键下载到本地,所以这只是对网站做的防盗链,对于用户还是挺友好的。
这是使用的是ngx_http_referer_module模块,通常使用它来阻挡非法的域名请求,请注意伪装Referer头部其实非常简单,因此这个模块只能用于阻挡大部分非法请求,而有些正常请求,如用户直接访问是不会携带Referer头部,但是这种情况是应当被允许的,因此不能拒绝来源Referer头部为空的请求。
在vhost文件夹下面新建一个hero.com.conf的配置文件,其中的内容为:
1234567 ...
Nginx安全优化
写在前面前面学习的都是如何使用Nginx,接下来学习更深层次的Nginx优化知识。我们可以通过修改或者隐藏Nginx版本号,或者更改Nginx服务的默认用户等方式来提升Nginx的安全性。
隐藏Nginx版本号在浏览器中访问一个不存在的链接,可以看到页面出现如下所示的信息:
可以看到它直接暴露了Nginx的版本号,这肯定是不安全的,除了这个版本号之外,还有其他的信息也是较为敏感的,开发者可以进入到Nginx安装所在机器,执行如下命令来查看输出信息:
12345678910[root@envythink vhost]# curl -I 127.0.0.1HTTP/1.1 200 OKServer: nginx/1.17.0Date: Wed, 18 May 2020 07:02:59 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 03 Nov 2020 01:18:28 GMTConnection: keep-aliveETag: "5fa0afe4-264"Accept-Range ...
Nginx日志文件
写在前面在前面学习Nginx目录结构的时候,可以发现它有一个logs目录,这是nginx日志的默认目录,里面包括访问日志(access.log)、错误日志(error.log)以及nginx.pid文件。nginx.pid文件就是nginx进程在启动后会将其pid写入这个文件中,这个没什么好学习的。现在学习的重点就是访问日志(access.log)和错误日志(error.log)。
访问日志(access.log)访问日志文件(access.log)记录了每个用户对网站的访问请求,这个功能是ngx_http_log_module模块提供的,access.log文件可以帮助站长分析用户的浏览行为。
日志格式首先打开access.log文件,查看一下其中的内容,如下所示:
可以看到日志文件的记录格式为“访问IP+访问时间+请求方法+请求路径+HTTP版本+状态码+代理信息”,这些都是我们从日志文件中能获取到的,但是这些肯定是可以定制的。
回忆之前的Nginx主配置文件nginx.conf,可以发现里面有如下一段代码:
也就是下面的代码片段其实就是用来定义日志文件的输出格式,这是默认的格 ...
Nginx解决跨域问题
写在前面在前面我们学习了HTTP请求、响应报文、简单请求和非简单请求,接下来开始学习Nginx如何解决跨域问题。
简单请求和非简单请求首先对前面学习的简单请求和非简单请求相关内容进行回顾。为什么需要区分简单请求和非简单请求,那是因为浏览器处理简单请求和非简单请求的方式不一样。
如果某个请求同时满足下面两个条件,那么该请求就属于简单请求:(1)请求方法是GET、POST或者HEAD三者中的任意一个;(2)HTTP头信息不超过下面几个字段:Accept、Accept-Language、Content-Language、Last-Event-IDContent-Type。请注意Last-Event-IDContent-Type只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain;
除此之外,凡是不同时满足这两个条件的,都属于非简单请求。
前面说过浏览器会针对这两种请求采取不同的处理方式,那么具体的处理方式又是怎样的呢?
简单请求对于简单请求来说,浏览器会在其头信息中增加Origin字段后直接发出,Orig ...
