大数据基础

大数据

大数据概念

大数据(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 目录结构

  1. bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
  2. etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
  3. lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
  4. sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
  5. share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

Hadoop 运行模式

Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

  • 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用
  • 伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用
  • 完全分布式模式:多台服务器组成分布式环境。生产环境使用

单词计数

  1. 创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹
mkdir wcinput
  1. 在 wcinput 文件下创建一个 word.txt 文件
cd wcinput
  1. 编辑 word.txt 文件
vim word.txt

在文件中输入如下内容

hadoop yarn
hadoop mapreduce
dyk dyk

保存退出::wq

  1. 回到 Hadoop 目录/opt/module/hadoop-3.1.3
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
  1. 查看结果
cat wcoutput/part-r-00000
上一篇:鸟哥的Linux私房菜(基础版)第十章学习笔记


下一篇:C++第10课 STL容器 (二)