胡斌Hadoop学习.docx
《胡斌Hadoop学习.docx》由会员分享,可在线阅读,更多相关《胡斌Hadoop学习.docx(24页珍藏版)》请在冰豆网上搜索。
![胡斌Hadoop学习.docx](https://file1.bdocx.com/fileroot1/2023-2/1/9454cf98-c9ff-4477-af2d-d4d3af97ca4c/9454cf98-c9ff-4477-af2d-d4d3af97ca4c1.gif)
胡斌Hadoop学习
Hadoop学习
一、什么是云
云计算(CloudComputing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备。
1.云计算概论
互联网上汇聚的计算资源、存储资源、数据资源和应用资源正随着互联网规模的扩大而不断增加,互联网正在从传统意义的通信平台转化为泛在、智能的计算平台。
与计算机系统这样的传统计算平台比较,互联网上还没有形成类似计算机操作系统的服务环境,以支持互联网资源的有效管理和综合利用。
在传统计算机中已成熟的操作系统技术,已不再能适用于互联网环境,其根本原因在于:
互联网资源的自主控制、自治对等、异构多尺度等基本特性,与传统计算机系统的资源特性存在本质上的不同。
为了适应互联网资源的基本特性,形成承接互联网资源和互联网应用的一体化服务环境,面向互联网计算的虚拟计算环境(Internet-basedVirtualComputingEnvironment,iVCE)的研究工作,使用户能够方便、有效地共享和利用开放网络上的资源。
云计算概观
互联网上的云计算服务特征和自然界的云、水循环具有一定的相似性,因此,云是一个相当贴切的比喻。
根据美国国家标准和技术研究院的定义,云计算服务应该具备以下几条特征:
∙随需应变自助服务。
∙随时随地用任何网络设备访问。
∙多人共享资源池。
∙快速重新部署灵活度。
∙可被监控与量测的服务。
一般认为还有如下特征:
∙基于虚拟化技术快速部署资源或获得服务。
∙减少用户终端的处理负担。
∙降低了用户对于IT专业知识的依赖。
2.云的应用
∙云教育
教育在云技术平台上的开发和应用,被称为“教育云”。
云教育从信息技术的应用方面打破了传统教育的垄断和固有边界。
通过教育走向信息化,使教育的不同参与者——教师、学生、家长、教育部门等在云技术平台上进行教育、教学、娱乐、沟通等功能。
同时可以通过视频云计算的应用对学校特色教育课程进行直播和录播,并将信息储存至流存储服务器上,便于长时间和多渠道享受教育成果。
∙云物联
物联网是新一代信息技术浪潮的生力军。
物联网通过智能感知、识别技术与普适计算广泛应用于互联网各方面。
物联网作为互联网的业务和应用,随着其深入的发展和流量的增加,对数据储存和计算量的要求将带来对云计算的需求增加。
并且在物联网的高级阶段,必将需要虚拟云计算技术的进一步应用。
[21]
∙云社交
云社交是一种虚拟社交应用。
它以资源分享作为主要目标,将物联网、云计算和移动互联网相结合,通过其交互作用创造新型社交方式。
云社交把社会资源进行测试、分类和集成,并向有需求的用户提供相应的服务。
用户流量越大,资源集成越多,云社交的价值就越大。
目前云社交已经具备了初步模型。
∙云安全
云安全是云计算在互联网安全领域的应用。
云安全融合了并行处理、网络技术、未知病毒等新兴技术,通过分布在各领域的客户端对互联网中存在异常的情况进行监测,获取最新病毒程序信息,将信息发送至服务端进行处理并推送最便捷的解决建议。
通过云计算技术使整个互联网变成了终极安全卫士。
[22]
∙云政务
云计算应用于政府部门中,为政府部门降低成本提高效率做出贡献。
由于云计算具有集约、共享、高效的特点,所以其应用将为政府部门降低20%至80%的成本。
所以在电子商务延伸至电子政务的背景下,各国政府部门都在着力进行电子政务改革,研究云计算普遍应用的可能性。
伴随政府改革的进行,政府部门也开始从自建平台到购买电信运营商的服务,这将为促进云计算的进一步发展并为电信运营商带来商机。
∙云存储
云存储是云计算的一个新的发展浪潮。
云存储不是某一个具体的存储设备,而是互联网中大量的存储设备通过应用软件共同作用协同发展,进而带来的数据访问服务。
云计算系统要运算和处理海量数据,为支持云计算系统需要配置大量的存储设备,这样云技术系统就自动转化为云存储系统。
故而,云存储是在云计算的概念的延伸。
二、hadoop
1.hadoop的核心
①.HDFS:
HadoopDistributedFileSystem分布式文件系统
②.YARN:
YetAnotherResourceNegotiator资源管理调度系统
2.hadoop的第一个问题:
怎样解决海量数据的存储?
大数据服务器图示解析示意图:
1解析:
数据较多时,一台机器存储不下来,那么我们采用分布式存储方法,采用多台服务器存储。
一份数据存储多份,这样数据的安全性得以保证。
2HDFS架构
●主从结构
❿主节点,namenode
❿从节点,有很多个:
datanode
●namenode负责:
❿接收用户操作请求
❿维护文件系统的目录结构
❿管理文件与block之间关系,block与datanode之间关系
●datanode负责:
❿存储文件
❿文件被分成block存储在磁盘上
❿为保证数据安全,文件会有多个副本
●一个简单的分布式架构设计思想:
Client客户端上传文件需要存储在云端,那么现在我需要存储在那台服务器上呢?
首先我们设计了一个目录管理节点,这个节点管理下面所有的服务器,客户端上传时首先询问namedata节点,namedata节点会询问目前那个节点空闲,或者空间足够,再返回给你相应的信息,那么这个数据就存储在这台机子上。
3.怎样解决海量数据的计算?
求和:
1+5+7+3+4+9+3+5+6=?
从上图就可以看出:
MapReduce的设计思想,把一个很大的任务交给很多机器进行并行运算。
三、hadoop部署
1.hadoop伪分布式搭建
①.安装vmWare虚拟机
②.安装centOS的linux系统
③.配置linux
点击VMware快捷方式,右键打开文件所在位置->双击vmnetcfg.exe->VMnet1host-only->修改subnetip设置网段:
192.168.1.0子网掩码:
255.255.255.0->apply->ok
回到windows-->打开网络和共享中心->更改适配器设置->右键VMnet1->属性->双击IPv4->设置windows的IP:
192.168.1.110子网掩码:
255.255.255.0->点击确定
在虚拟软件上--MyComputer->选中虚拟机->右键->settings->networkadapter->hostonly->ok
2.开启linux虚拟机进行配置
❿修改时区
第一步:
打开如下图:
选择时区完毕需要设置同步时区:
3.配置主机名
第一.使用命令行修改主机名:
1.打开一个终端(右键linux桌面,打开终端)
输入上述命令回车:
修改上述主机名:
在insert(插入)模式下进行修改:
修改完毕保存退出,快键键:
shift+Z+Z(注意此快捷键必须在非插入模式下进行)
第二:
修改主机IP
1.使用图形化界面修改主机IP
1.查看当前服务网卡
2.修改步骤
2.使用命令模式进行修改IP
使用命令setup启动图形化界面进行配置。
进入:
进入配置IP:
3.修改配置文件方式(屌丝程序猿专用)
vim/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"###
HWADDR="00:
0C:
29:
3C:
BF:
E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.1.44"###
NETMASK="255.255.255.0"###
GATEWAY="192.168.1.1"###
Ø关闭防火墙
1.查看防火墙
1.serviceiptablesstatus
2.关闭防火墙
1.serviceiptablesstop
3.关闭防火墙开机自启动
1.查看哪些服务开机自启动
chkconfigiptables–list
2.关闭服务自启动
chkconfigiptablesoff
3.修改主机名和IP的映射关系
vim/etc/hosts
192.168.1.100itcast
4.重启
Reboot
问题:
修改本地虚拟网卡1的ip,同时修改linux网卡1的ip(host-only),eth0(网卡0)就是本地连接:
与本地连接对应。
说白了就是本地连接,那么我们在修改linux映射的时候修改的是网卡0,那么我们通信到底是如何通信的?
那么我的虚拟网卡1还在使用吗?
理解:
虚拟机安装后,在本地连接的地方产生了多个虚拟连接:
但是注意,产生在本地的连接就是本地主机连接,我们需要通过本地不同的虚拟网卡去访问虚拟机,本地连接就是eth0
VM1就是eth1,VM8就是eth8,就是这几个连接。
使用这块网卡访问虚拟机linux我们需要做几个事情:
第一:
由于我linux里面ifconfig后可以看见,我后面使用的是eth1这块网卡正在工作,那么我不想切换网卡进行工作,那么我就直接配置网卡一:
但是这块网卡的配置文件需要手动编写,那么这块网卡的UUID就需要使用命令【nmclicon】进行获取,MAC地址也需要进行ifconfig进行获取。
然后进行配置,连接成功!
ping也通。
注意:
要始终把握在本地的网卡是windows本机网卡,我们是通过这些网卡来访问虚拟机,现在本机使用网卡VMnet1进行和虚拟机通信。
本地机与虚拟机通信需要使用虚拟机当前使用的网卡,
Ø安装JDK
1.由于使用虚拟机安装JDK,那么就存在JDK文件跨平台共享的问题,那么解决这个问题有如下2种解决方案。
①.使用共享文件夹
②.使用FileZilla-3.7.3这款文件传输软件,把jdk上传到linux上,进行安装。
2.安装
①.把jdk拖放到linux上
②.进行jdk解压(解压到指定目录下/usr/java)
创建文件夹:
java
Mkdir/usr/java:
在usr下面创建java文件夹
Mv:
移动,把jdk移动到文件下。
解压:
直接在root下面进行解压到指定目录:
:
tar–zxvfjdk-7u60-linux-i586.gz–c/usr/java/
:
cd/usr/java、然后再解压
查看:
发现解压成功
2.配置环境变量
:
pwd:
显示jdk安装目录路径,我们需要这个路径来配置环境变量【复制】
:
进入:
Shift+G【按住G(安装大G)】进入文件末位:
按住O进行插入一行:
到文件末位进行配置:
:
退回root目录:
cd~【为了演示在任何目录下访问jdk】
可以发现:
java命令没有起作用,那么这是为什么呢?
解析:
因为修改配置文件没有被加载,所以不起作用,需要刷新配置文件
刷新配置文件命令:
然后发现java命令起作用:
ØHadoop的安装
1.上传hadoop包,使用FileZilla-3.7.3进行移动到linux上面
2.创建一个目录发展hadoop解压文件
:
mkdir/itcast//创建在根目录下面
3.解压
:
tar–zxvfhadoop-2.4.1.tar.gz–C/itcast///解压到itcast目录下面
注意:
hadoop下面etc使我们hadoop配置文件放置的位置。
我们需要进入进行配置
4.修改配置文件
①.修改hadoop-env.sh配置文件(在hadoop配置文件目录下)
换成下面这个目录:
②.:
修改core-site.xml
命令:
vimcode-site.xml进入配置文件进行修改
修改如下模式:
3.修改hdfs-site.xml
命令:
vimhdfs-site.xml进入配置文件进行修改:
指定HDFS文件副本保存文件数量:
因为只有一台机器,所以现在保存一份:
④.修改mapred-site.xml
命令:
ls
进入发现没有我们所需要的mapred-site.xml的配置文件:
故而我们需要:
自己创建复制或在移动模板文件修改扩展名
下面我们使用:
mv来进行修改文件扩展名。
命令:
mvmapred-site.xml.templatemapred-site.xml
进行修改:
⑤.修改yarn-site.xml
--指定YARN的老大(ResourceManager)的地址-->
yarn.resourcemanager.hostname
itcast
--reducer获取数据的方式-->
yarn.nodemanager.aux-services
mapreduce_shuffle
5.将hadoop添加到环境变量
环境变量配置完毕必须刷新:
命令:
Source/etc/profile
①.初始化HDFS(格式化HDFS文件系统)
格式化之前必须保证前面配置文件正确:
命令:
hdfsnamenode–format
发现在hadoop下面生成tmp目录:
②.启动HDFS,yarn
命令:
./start-all.sh
启动所有,发现启动过程中需要连续不断的输入多次用户名和密码,这就是使用这个过时命令的弊端。
使用命令:
jps检查是否启动成功
Yarn:
负责资源的调度
ResourceManager(资源管理器)是yarn的老大,管理yarn的所有。
NodeManager(yarn的小弟):
现在就一台机器,就一个小弟,负责干活,下面还有分布。
HDFS:
负责分布式文件系统
NameNode:
hdfs的老大,集群,多个。
安全性
SecondaryNameNode:
是NameNode的助理。
帮助NameNode完成一些事
DataNode:
hdfs的小弟,负责存放数据,仓库。
发现启动成功。
下面使用浏览器来访问:
http:
//192.168.24.223:
50070/dfshealth.jsp
成功访问页面:
6.验证HDFS
①.怎样验证一个HDFS文件呢?
为了验证HDFS,我们上传一个文件:
上述hadoop命令都可以通过命令提示获取:
例如:
我输入命令:
hadoop回车、或者hadoopfs回车,那么命令提示就会在下面进行显示。
可以看见上述命令上传文件已经成功,那么说明前面我们的一系列配置都是正确的,那么现在我们就可以在浏览器来查看我们上传的文件:
那么现在就说明我们自己把本地文件上传到网盘了。
既然文件已经存在网盘了,那么我们也能下载了,那么怎么下载呢?
:
使用浏览器进行下载
点击hadoop进入页面进行下载:
:
使用命令进行下载:
7.测试MapReduce和Yarn
测试MapReduce和yarn那么就需要相应的jar包:
/itcast/hadoop-2.4.1/share/hadoop/mapreduce:
mapreduce所有jar包都在下面:
Linux下面命令:
WC统计单词数量
使用命令:
vimwords创建文件在里面输入5个hello~~单词。
发现统计词语数量:
5行,10个单词,56个字符。
显示我输入的hello
下面我们正式运行我们jar包来展示hadoop的MapReduce任务实例:
通过网页查看:
发现words已经上传成功
那么我们把words上传到HDFS目的是为了解决我的mapreduce所需要的输入参数:
in
那么现在我们开始测试MapReduce:
可以看出:
我们MapReduce正常运行,那么我们的伪分布式搭建完全正确:
现在可以看出我们MapReduce已经成功,HDFS里面又多了2个项目文件。
点击wcout进入:
上面success表示成功:
点击下面part-r-00000表示结果:
进入
集群配置成功。
Ø配置ssh(secureshell)免登陆系统
1.改变使用网卡
由于新建一个(不同的mac地址)虚拟机,但是从第一个虚拟机开始,他们都使用网卡eth1
由于前面一个虚拟机使用了eth1,而现在我想使用eth0网卡。
那么做如下操作:
命令:
vi/etc/udev/rules.d/70-persistent-net.rules
进入查看网卡配置:
命令:
ifconfig
可以看见,现在使用网卡变为网卡eth0.
2.配置ssh免登陆
命令:
ls–la显示当前目录下所有文件。
命令:
ssh-keygen–ttsa进行加密。
生成一个私钥:
id_rsa生成一个公钥:
id_rsa.pub
公钥加密序列如下:
可以发现:
生成的非常复杂。
现在:
自己到自己免登陆,那么我们使用公钥拷贝到自己当前认证权限authorized_keys目录:
命令:
cpid_rsa.pubauthorized_keys把公钥拷贝到认证目录。
命令:
./start-all.sh进行登录
3.如何在一台机器免密码登录到另一台机器。
上面展示了有密码登录:
那么下面怎么配置免密码登录呢?
可以想象:
那么这种免密码登录肯定与我们的公钥认证有关系。
命令:
ssh-copy-id192.168.24.224把当前公钥拷贝到这个IP的机器。
免密码登录成功:
总结:
如果一台机器想登陆到另一台机器,那么就生成一对钥匙:
公钥,私钥
然后把公钥拷贝给另一台机器。
那么现在就可以免登陆到另一台机器了。
注意:
这个就是单向的,不是双向的。
Ø分布式文件系统HDFS