大数据
大数据概念
大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产
大数据主要解决,海量数据的采集、存储和分析计算问题
通过对海量数据进行分析,挖掘,进而发现数据内在的规律,从而为企业或者国家创造价值
大数据特点(4V)
Volume(大量)
典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级
Velocity(高速)
双11一秒交易额过100亿
Variety(多样)
这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。
Value(低价值密度)
价值密度的高低与数据总量的大小成反比
Hadoop
Hadoop是什么
- Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
- 主要解决,海量数据的存储和海量数据的分析计算问题。
- 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
Hadoop 三大发行版本
Hadoop 三大发行版本:Apache、Cloudera、Hortonworks。
Apache 版本最原始(最基础)的版本,对于入门学习最好。2006
Cloudera 内部集成了很多大数据框架,对应产品 CDH。2008
Hortonworks 文档较好,对应产品 HDP。2011
Hortonworks 现在已经被 Cloudera 公司收购,推出新的品牌 CDP。
Hadoop 优势
- 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
- 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配
Hadoop 组成
Hadoop1.x 时 代 ,Hadoop中 的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
在Hadoop2.x时 代,增加 了Yarn。Yarn只负责资 源 的 调 度 ,MapReduce 只负责运算。
Hadoop3.x在组成上没有变化
HDFS
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。
HDFS架构概述
NameNode(nn)
存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
DataNode(dn)
在本地文件系统存储文件块数据,以及块数据的校验和
Secondary NameNode(2nn)
每隔一段时间对NameNode元数据备份
Block
数据块,为了能通过多个节点保存大数据集,HDFS将大数据集文件切分成一块块的数据块,在现有hadoop2版本中默认一个块大小为128M
YARN架构概述
Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器
- ResourceManager(RM):整个集群资源(内存、CPU等)的老大
- ApplicationMaster(AM):单个任务运行的老大
- NodeManager(N M):单个节点服务器资源老大
- Container:容器,相当一*立的服务器,里面封装
任务运行所需要的资源,如内存、CPU、磁盘、网络等。
客户端可以有多个
集群上可以运行多个ApplicationMaster
每个NodeManager上可以有多个Container
MapReduce 架构概述
- MapReduce 将计算过程分为两个阶段:Map 和 Reduce
- Map 阶段并行处理输入数据
- Reduce 阶段对 Map 结果进行汇总
Hadoop 运行环境搭建
创建三台虚拟机
1.虚拟网卡IP设置
ip 192.168.228.1
gw 192.168.228.2
netmask 255.255.255.0
dns 8.8.8.8
2.修改虚拟机的静态IP
第一台bigdata登录
su root
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static ###修改
ONBOOT=yes ###修改
IPADDR=192.168.228.161 ###添加
NETMASK=255.255.255.0 ###添加
GATEWAY=192.168.228.2 ###添加
DNS1=8.8.8.8 ###添加
截图
重启网卡
service network restart
查看IP
ip addr
截图
3.修改主机名
su root
vi /etc/hostname
hadoop102
配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts
vi /etc/hosts
192.168.228.161 hadoop102
192.168.228.162 hadoop103
192.168.228.163 hadoop104
reboot重启
另外两台主机配置如下
第二台bigdata登录
su root
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static ###
ONBOOT=yes ###
IPADDR=192.168.228.162 ###
NETMASK=255.255.255.0 ###
GATEWAY=192.168.228.2 ###
DNS1=8.8.8.8
重启网卡
service network restart
查看IP
ip addr
srt软件
su root
vi /etc/hostname
hadoop103
vi /etc/hosts
192.168.228.161 hadoop102
192.168.228.162 hadoop103
192.168.228.163 hadoop104
第三台bigdata登录
su root
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static ###
ONBOOT=yes ###
IPADDR=192.168.228.163 ###
NETMASK=255.255.255.0 ###
GATEWAY=192.168.228.2 ###
DNS1=8.8.8.8
重启网卡
service network restart
查看IP
ip addr
srt软件
su root
vi /etc/hostname
hadoop104
vi /etc/hosts
192.168.228.161 hadoop102
192.168.228.162 hadoop103
192.168.228.163 hadoop104
4.关闭防火墙
su root
123456
#关闭防火墙
systemctl stop firewalld
#关闭防火墙开机启动
systemctl disable firewalld
#查看防火墙状态
systemctl status firewalld
5.配置SSH免登录
1. bigdata登录hadoop102
su bigdata
cd ~/(#进入到我的home目录)
cd .ssh(如果报错进行以下操作)
ssh hadoop102(自己-目的产生.ssh文件)
yes
123456
exit
cd .ssh
ssh-keygen -t rsa(三个回车)
# 分别执行下面3条命令
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
6.创建目录并修改权限
su root
mkdir /opt/software
mkdir /opt/module
chmod 777 /opt/software
chmod 777 /opt/module
7.安装JDK
卸载现有JDK
查询是否安装Java软件:
rpm -qa | grep java
如果安装的版本低于1.7,卸载该JDK
sudo rpm -e 软件包
查看JDK安装路径:
which java
用 XShell 传输工具将 JDK 导入到 opt 目录下面的 software 文件夹下面
在 Linux 系统下的 opt 目录中查看软件包是否导入成功
ls /opt/software/
解压 JDK 到/opt/module 目录下
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /opt/module
配置 JDK 环境变量
su root
123456
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_251
export PATH=$PATH:$JAVA_HOME/bin
:wq
source /etc/profile
测试 JDK 是否安装成功
java -version
另外两台机器配置
su bigdata
cd /opt
scp -r /opt/module hadoop103:/opt
scp -r /opt/module hadoop104:/opt
分别在hadoop103,hadoop104修改/etc/profile
su root
123456
vi /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_251
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
su bigdata
安装hadoop
上传hadoop
将hadoop上传到 /opt/software
解压 /opt/module 下面
cd /opt/software
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module
配置hadoop
第一个:hadoop-env.sh
cd /opt/module/hadoop-2.7.2/etc/hadoop
vi hadoop-env.sh
#第27行左右
export JAVA_HOME=/opt/module/jdk1.8.0_251
第二个:core-site.xml
vi core-site.xml
<configuration>
<!--配置hdfs文件系统默认名称-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop(主机名):9000</value>
</property>
</configuration>
注意:名称是一个HDFS的URL
配置到configuration标签里面
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
mkdir -p /opt/module/hadoop-2.7.2/data/tmp
第三个:hdfs-site.xml
vi hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
第四个:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五个:yarn-site.xml
vi yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
第六个:slaves
vi slaves
添加
hadoop102
hadoop103
hadoop104
复制到另外两台机器上
cd /opt/module
scp -r /opt/module/hadoop-2.7.2 hadoop103:/opt/module
scp -r /opt/module/hadoop-2.7.2 hadoop104:/opt/module
添加环境变量
将hadoop添加到环境变量(三台机器)
su root
vi /etc/profile
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
su bigdata
格式化hdfs
格式化namenode(hadoop102)(仅仅是第一次使用需要格式化)
hdfs namenode -format
注意:这里的格式化是格式成hadoop可以识别的文件系统,比如我们买了一块硬盘我们需要格式化成windows或者mac,linux系统识别的文件系统,才能使用这个文件系统。
启动hadoop(hadoop102)
# 先启动HDFS
start-dfs.sh
再启动YARN
start-yarn.sh
关闭安全模式
hdfs dfsadmin -safemode leave
验证是否启动成功
使用jps命令验证
# 12. 查看hadoop是否启动成功
jps 存在以下进程名称说明启动成功
5876 SecondaryNameNode
5702 DataNode
5995 Jps
5612 NameNode
可视化管理界面
http://hadoop102:50070 (HDFS管理界面)
http://hadoop102:8088 (MR管理界面)
截图
Hadoop 目录结构
- bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
- etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
- lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
- sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
- share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例
Hadoop 运行模式
Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
- 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用
- 伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用
- 完全分布式模式:多台服务器组成分布式环境。生产环境使用
单词计数
- 创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹
mkdir wcinput
- 在 wcinput 文件下创建一个 word.txt 文件
cd wcinput
- 编辑 word.txt 文件
vim word.txt
在文件中输入如下内容
hadoop yarn
hadoop mapreduce
dyk dyk
保存退出::wq
- 回到 Hadoop 目录/opt/module/hadoop-3.1.3
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
- 查看结果
cat wcoutput/part-r-00000