大数据之Hadoop入门
一、Hadoop特点:volume(大量) velocity(高速) variable(多样) value(低价值密度)
二、Hadoop优势:
1.高可靠性--hadoop底层维护多个数据版本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据丢失。
2.高扩展性--在集群间分配任务数据,可方便的扩展数以千计的节点。
3.高效性--在MapReduce的思想下,hadoop是并行工作的,以加快任务处理速度。
4.高容错性--能够自动将失败的任务重新分配。
三、Hadoop的组成:
1. Hadoop1.x VS Hadoop2.x
hadoop1.x是由 MapReduce(计算+资源调度) HDFS(数据存储) common(辅助工具) 组成
hadoop2.x是由 MapReduce(计算) Yarn(资源调度) HDFS(数据存储) common(辅助工具) 组成
区别:两者没有太大区别,只是2.x增加了Yarn,Yarn在2.x中只负责资源调度 MapReduce则只负责运算
2. HDFS架构
01.NameNode(nn):存储文件的元数据,如文件名、文件目录结构、文件属性、以及每个文件的块列表和块所在的DataNode等。
02.DataNode(dn):在本地文件系统存储块数据,以及块数据的校验和。
03.SecondaryNameNdoe(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
YARN架构
01.ResourceManager(RM)主要作用
1.处理客户端请求
2.监控NodeManager
3.启动或监控ApplicationMaster
4.资源的分配与调度
02.NodeManager(NM)主要作用
1.管理单个节点上的资源
2.处理来自ResourceManager的命令
3.处理来自ApplicationMaster的命令
03.ApplicationMaster(AM)主要作用
1.负责数据的切分
2.为应用程序申请资源并分配给内部的任务
3.任务的监控与容错
04.Container
Container是YARN中的资源抽象,它封装了某个节点上多维度资源,如(内存、CPU、磁盘、网络)等。
YARN工作机制
(0)Mr程序提交到客户端所在的节点
(1)Yarnrunner向Resourcemanager申请一个Application。
(2)rm将该应用程序的资源路径返回给yarnrunner
(3)该程序将运行所需资源提交到HDFS上
(4)程序资源提交完毕后,申请运行mrAppMaster
(5)RM将用户的请求初始化成一个task
(6)其中一个NodeManager领取到task任务。
(7)该NodeManager创建容器Container,并产生MRAppmaster
(8)Container从HDFS上拷贝资源到本地
(9)MRAppmaster向RM 申请运行maptask容器
(10)RM将运行maptask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
(11)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptask,maptask对数据分区排序。
(12)MRAppmaster向RM申请2个容器,运行reduce task。
(13)reduce task向maptask获取相应分区的数据。
(14)程序运行完毕后,MR会向RM注销自己。
四、Hadoop环境搭建
1. 安装好linux
2. *安装VMTools
3. 关闭防火墙
sudo service iptables stop
sudo chkconfig iptables off
4. 设置静态IP,改主机名
编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成
=================================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.5.101
PREFIX=24
GATEWAY=192.168.5.2
DNS1=192.168.5.2
=================================
编辑vim /etc/sysconfig/network
改HOSTNAME=那一行
5. 配置/etc/hosts
vim /etc/hosts
=============================
192.168.75.100 hadoop100
192.168.75.101 hadoop101
192.168.75.102 hadoop102
=============================
6. 创建一个一般用户jinghang,给他配置密码
useradd jinghang
passwd jinghang
7. 配置这个用户为sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL
添加jinghang ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存
8. *在/opt目录下创建两个文件夹module和software,并把所有权赋给jinghang
mkdir /opt/module /opt/software
chown jinghang:jinghang /opt/module /opt/software
五、Hadoop运行模式
Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
1.本地模式:不需要启用单独进程,直接可以运行,测试和开发时使用。
2.伪分布模式:等同于完全分布式,只有一个节点。
3.完全分布式模式:多个节点一起运行。
大数据之Hadoop(HDFS)
一、HDFS组成架构
1. NameNode(nn)就是Master 他是一个主管,管理者
01.管理HDFS的名称空间
02.配置副本策略
03.管理数据块(Block)映射信息
04.处理客户端读写请求
2. DataNode:就是Slave,NameNode下达命令,DataNode执行实际的操作
01.存储实际的数据块
02.执行数据块的读写操作
二、HDFS优缺点
1. 优点
01.高容错性
001.数据自动保存多个副本,他通过增加多个副本的形式,提高容错性。
002.某一个副本丢失后,它可以自动恢复
02.适合处理大数据
01.数据规模:能够处理数据规模达到GB、TB甚至PB级别的数据
02.文件规模:能够处理百万规模以上的文件数量,数量相当之大
03.可构建在廉价机器上,通过多副本机制,提高可靠性
2. 缺点
01.不适合低延时数据访问,比如毫秒级的存储数据,是做不到的
02.无法高效的对大量小文件进行存储
001.存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息,这样是不可取的因为NameNode的内存是有限的。
002.小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标
03.不支持并发写入,文件随机修改
001.同一时间一个文件只能有一个用户执行写操作,不允许多个线程同时写。
002.仅支持数据append(追加),不支持文件随机修改
三、HDFS的块大小
1.HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2.x版本中是128M,老版本是64M
2.为什么块大小不能设置调小,也不能设置太大?
01.HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置
02.HDFS的块设置太大,从磁盘传输数据的时间会太明显大于定位这个块开始位置所需的时间,导致程序在处理这个块数据时,会非常慢
四、HDFS的Shell的操作
1. shell命令操作
-help 功能:输出这个命令参数手册
-ls 功能:显示目录信息
示例: hadoop fs -ls hdfs://hadoop-server01:9000/
备注:这些参数中,所有的hdfs路径都可以简写
-->hadoop fs -ls / 等同于上一条命令的效果
-mkdir 功能:在hdfs上创建目录
示例:hadoop fs -mkdir -p /aaa/bbb/cc/dd
-moveFromLocal(这里的本地为虚拟机本地,千万别以为是电脑本机的本地) 功能:从本地剪切粘贴到hdfs
示例:hadoop fs - moveFromLocal /home/hadoop/a.txt /aaa/bbb/cc/dd
-moveToLocal 功能:从hdfs剪切粘贴到本地
示例:hadoop fs - moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt
--appendToFile 功能:追加一个文件到已经存在的文件末尾
示例:hadoop fs -appendToFile ./hello.txt hdfs://hadoop-server01:9000/hello.txt
-cat 功能:显示文件内容
示例:hadoop fs -cat /hello.txt
-tail 功能:显示一个文件的末尾
示例:hadoop fs -tail /weblog/access_log.1
-text 功能:以字符形式打印一个文件的内容
示例:hadoop fs -text /weblog/access_log.1
-chgrp
-chmod
-chown 功能:linux文件系统中的用法一样,对文件所属权限
示例:hadoop fs -chmod 666 /hello.txt hadoop fs -chown someuser:somegrp /hello.txt
-copyFromLocal 功能:从本地文件系统中拷贝文件到hdfs路径去
示例:hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
-copyToLocal 功能:从hdfs拷贝到本地
示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz
-cp 功能:从hdfs的一个路径拷贝hdfs的另一个路径
示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-mv 功能:在hdfs目录中移动文件
示例: hadoop fs -mv /aaa/jdk.tar.gz /
-get 功能:等同于copyToLocal,就是从hdfs下载文件到本地
示例:hadoop fs -get /aaa/jdk.tar.gz
-getmerge 功能:合并下载多个文件
示例:比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,... hadoop fs -getmerge /aaa/log.* ./log.sum
-put 功能:等同于copyFromLocal
示例:hadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-rm 功能:删除文件或文件夹
示例:hadoop fs -rm -r /aaa/bbb/
-rmdir 功能:删除空目录
示例:hadoop fs -rmdir /aaa/bbb/ccc
-df 功能:统计文件系统的可用空间信息
示例:hadoop fs -df -h /
-du 功能:统计文件夹的大小信息
示例:hadoop fs -du -s -h /1805c/*
-count 功能:统计一个指定目录下的文件节点数量
示例:hadoop fs -count /aaa/
-setrep 功能:设置hdfs中文件的副本数量
示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz