大数据+Hadoop集群学习

x33g5p2x  于2021-11-13 转载在 Hadoop  
字(11.0k)|赞(0)|评价(0)|浏览(576)

1.课前资料

2.课程整体介绍

3.大数据介绍

什么是大数据?

简单来说大数据就是海量数据及其处理。

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。

在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [2] 中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。——摘自百度百科

为什么要学习大数据?

拓宽发展面

大数据已经成为基础技术,现在最火的人工智能,物联网等就建立在大数据的基础上。

面向面试,提高认知深度,拓宽知识广度,增加面试筹码,提高薪资。

大数据相关技术

海量数据获取
爬虫(分析别人家的事):Python,java…

日志(分析自己的事):log4j、flume(数据的收集聚集加载)

历史数据(分析以前的事):mysql、oracle、ETL(数据的提取转化加载)hdfs、

实时数据(分析现在的事):hbase、spark、flink

海量数据存储

HDFS(Hive、Hbase、Spark依赖存储都是HDFS)Hadoop distributed file system

S3(亚马逊)

NFS(sun公司)

海量数据清洗

数据清洗没有我们想的那么复杂,方式有很多:

过程中可以用代码直接清洗,flume可以清洗,Hive可以清洗,flink可以清洗。整个流程中几乎每个步骤都可以做到数据的清洗。

海量数据处理

离线数据处理:MapReduce(hadoop的一部分)、Hive(底层是MR,业界主流)、SparkSQL、FlinkDataSet

流式数据处理:Flink(全面高效)、Storm(速度快,亚秒级)、SparkStreaming(速度没有Storm快,但是吞吐量高)

4.集群环境准备

4.1准备虚拟机

克隆三个虚拟机hadoop01、hadoop02、hadoop03均为NAT模式,其中hadoop01内存设置为1G(16G内存以上建议设置为2G),hadoop02和hadoop03为512M。

注:虚拟机登录的用户名和密码都是root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOVbJ37V-1636798575117)(day01_hadoop.assets/1626146805796.png)]

4.2修改为静态IP

修改IP地址,将:

第一台hadoop01的虚拟机ip地址改为:192.168.65.101

第二台hadoop02的虚拟机ip地址改为:192.168.65.102

第三台hadoop03的虚拟机ip地址改为:192.168.65.103

4.2.1配置文件

cd /etc/sysconfig/network-scripts   #进入网络配置目录
 
dir ifcfg*                         #找到网卡配置文件
 
ifcfg-ens33                         #找到版本最新的文件并修改
 
vim ifcfg-ens33
 
或者
 
vim /etc/sysconfig/network-scripts/ifcfg-ens33

4.2.2配置文件内容

注意不要写注释部分

TYPE=Ethernet
 
BOOTPROTO=static                              #改成static,针对NAT
 
NAME=eno16777736
 
UUID=4cc9c89b-cf9e-4847-b9ea-ac713baf4cc8
 
DEVICE=eno16777736
 
DNS1=114.114.114.114     #和网关相同
 
ONBOOT=yes               #开机启动此网卡
 
IPADDR=192.168.65.101    #固定IP地址
 
NETMASK=255.255.255.0    #子网掩码
 
GATEWAY=192.168.65.2     #网关和NAT自动配置的相同,不同则无法登录

4.2.3重启网络

以下两种方式任选其一

service network restart   #重启网络
 
systemctl restart network.service   #重启网络centos7

4.2.4查看IP

ip addr                  #查看IP地址 ip add

4.3mobaxTerm的使用

登录成功后,弹出对话框点yes 保存密码。

补充:mobaxTerm远程连接慢的问题

在使用shell连接虚拟机时连接等待时间太长,ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可。

1、打开sshd服务的配置文件
vim /etc/ssh/sshd_config
把UseDNS yes改为UseDNS no(如果没有,自行编写在文件末尾加入)
2、重启sshd服务
systemctl restart sshd.service 或者 /etc/init.d/sshd restart

4.4关闭防火墙

systemctl stop firewalld.service        #关闭防火墙服务
 
systemctl disable firewalld.service     #禁止防火墙开启启动
 
 
systemctl restart firewalld.service      #重启防火墙使配置生效

systemctl enable firewalld.service       #设置防火墙开机启动

检查防火墙状态

[root@hadoop01 ~]# firewall-cmd --state #检查防火墙状态
false							#返回值,未运行

4.5修改主机名

vi /etc/hostname

4.6修改hosts文件

vi /etc/hosts

在配置文件中增加ip地址映射

192.168.65.101 hadoop01
 
192.168.65.102 hadoop02
 
192.168.65.103 hadoop03

4.7三台机器重启

reboot

4.8设置免密登录

4.8.1三台机器生成公钥与私钥

ssh-keygen

执行该命令之后,按下三个回车即可

4.8.2拷贝公钥到同一台机器

三台机器执行命令:

ssh-copy-id hadoop01

4.8.3复制第一台机器的认证到其他机器

将第一台机器的公钥拷贝到其他机器上

在第一台机器上面执行以下命令

scp /root/.ssh/authorized_keys hadoop02:/root/.ssh
scp /root/.ssh/authorized_keys hadoop03:/root/.ssh

4.8.4测试

在hadoop01上进行远程登录测试

ssh hadoop02

不需要输入密码直接进入说明成功,exit退出

4.9三台机器时钟同步

通过网络进行时钟同步
通过网络连接外网进行时钟同步,必须保证虚拟机连上外网

ntpdate us.pool.ntp.org;

阿里云时钟同步服务器

ntpdate ntp4.aliyun.com

三台机器定时任务

crontab  -e   

*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;

*/每隔一分钟同步一次

或者直接与阿里云服务器进行时钟同步

crontab -e

*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

4.10三台机器安装jdk

查看自带的openjdk

rpm -qa | grep java

如果有,请卸载系统自带的openjdk,方式如下(注:目前系统已经卸载)

rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps

三台机器创建目录

所有软件的安装路径

mkdir -p /opt/servers

所有软件压缩包的存放路径

mkdir -p /opt/softwares

上传jdk到/export/softwares路径下去,并解压

tar -xvzf jdk-8u65-linux-x64.tar.gz -C ../servers/

配置环境变量

vim /etc/profile
export JAVA_HOME=/opt/servers/jdk1.8.0_65
export PATH=:$JAVA_HOME/bin:$PATH

修改完成之后记得 source /etc/profile生效

source /etc/profile

发送文件到hadoop02和hadoop03

scp -r /opt/servers/jdk1.8.0_65/ hadoop02:/opt/servers/
scp -r /opt/servers/jdk1.8.0_65/ hadoop03:/opt/servers/

或者:
scp -r /opt/servers/jdk1.8.0_65/ hadoop02:$PWD
scp -r /opt/servers/jdk1.8.0_65/ hadoop03:$PWD

注意:发送完成后要配置环境变量并生效。

测试

java -version

出现JDK版本号即为成功。

4.11修改windows中的hosts文件

在windows中的hosts文件里添加如下映射

192.168.65.101 hadoop01
192.168.65.102 hadoop02
192.168.65.103 hadoop03

5.Hadoop介绍

hadoop的定义:hadoop是一个分布式存储和分布式计算的框架。

分布式存储,是一个存储技术,将数据存储在多个服务上的()

5.2 hadoop的核心组件

HDFS:分布式存储组件

MapReduce:分布式计算组件

Yarn:资源调度管理器

5.2 hadoop的介绍及发展历史

  1. Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
  2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
    ——分布式文件系统(GFS),可用于处理海量网页的存储
    ——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
  3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。
    狭义上来说,hadoop就是单独指代hadoop这个软件,
    广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件。

5.2 hadoop的历史版本介绍

0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本

1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等

2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性

3.x版本系列:基于2.x的版本进行多层优化(新特性),主要的是改变MapReduce的数据计算方式。

5.3 hadoop2.x架构模型

文件系统核心模块

NameNode:集群当中的主节点,主要用于管理集群当中的各种元数据

secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理

DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配

NodeManager:负责执行主节点APPmaster分配的任务

5.4Hadoop 的安装有三种方式

单机模式:直接解压,只支持MapReduce的测试,不支持HDFS,一般不用。

伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。

​ 优点:功能完整。

​ 缺点:性能低下。学习测试用。

完全分布式模式:集群方式安装,生产级别。

HA:高可用。

5.4.1 伪分布式部署

需要环境:

JDK,JAVA_HOME,配置hosts,关闭防火墙,配置免密登录等。

注意:我们只将其安装在hadoop01节点上。

进入目录
cd /opt/servers
上传安装包并解压
tar -xvzf hadoop-2.7.7.tar.gz -C ../servers/
修改配置文件

位置:/opt/servers/hadoop-2.7.7/etc/hadoop

1.修改hadoop-env.sh
vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop
2.修改 core-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内

<property>
 
<!--用来指定hdfs的老大,namenode的地址-->
 
<name>fs.default.name</name>
 
<value>hdfs://hadoop01:8020</value>
 
</property> 
 
<property>
 
<!--用来指定hadoop运行时产生文件的存放目录-->  
 
<name>hadoop.tmp.dir</name>
 
<value>/opt/servers/hadoop-2.7.7/tmp</value>
 
</property>
3.修改 hdfs-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
  • 配置包括自身在内的备份副本数量到标签内
<property>
 
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
 
<!--伪分布式模式,此值必须为1-->
 
<name>dfs.replication</name>
 
<value>1</value>
 
</property>
 
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
 
<property>
 
<name>dfs.permissions</name>
 
<value>false</value>
 
</property>
4.修改 mapred-site.xml

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

<property> 
 
<!--指定mapreduce运行在yarn上-->
 
<name>mapreduce.framework.name</name>
 
<value>yarn</value>
 
</property>
5.修改 yarn-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml
  • 配置:粘贴高亮部分到标签内
<property>
 
<!--指定yarn的老大resourcemanager的地址-->
 
<name>yarn.resourcemanager.hostname</name>
 
<value>hadoop01</value>
 
</property>
 
<property>
 
<!--NodeManager获取数据的方式-->
 
<name>yarn.nodemanager.aux-services</name>
 
<value>mapreduce_shuffle</value>
 
</property>
6.修改slaves
vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01
7.配置hadoop的环境变量
vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME
启动
1.初始化
hdfs namenode -format
2.启动
start-all.sh
3.停止
stop-all.sh
4.测试
jps
5.停止服务
stop-all.sh
6.访问浏览器

windows的浏览器中访问hadoop01:50070

安装成功!

7.如果没有安装成功

如果没有成功(进程数不够)

1.stop-all.sh 停掉hadoop所有进程

2.删掉hadoop2.7.7下的tmp文件

3.hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。

4.start-all.sh 启动hadoop

5.4.2 完全分布式部署

安装环境服务部署规划

服务器IP192.168.65.101192.168.65.102192.168.65.103
NameNode
HDFSSecondary NameNode
DataNodeDataNodeDataNode
YARNResourceManager
NodeManagerNodeManagerNodeManager
MapReduceJobHistoryServer

先在第一台机器hadoop01进行部署

注意:如果已安装伪分布模式,先删除格式化后生成的数据文件,其他请略过。

rm -rf /opt/servers/hadoop-2.7.7/tmp
进入目录
cd /opt/servers
上传安装包并解压
tar -xvzf hadoop-2.7.7.tar.gz -C ../servers/
修改配置文件

位置:/opt/servers/hadoop-2.7.7/etc/hadoop

1.修改hadoop-env.sh
vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop
2.修改 core-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内

<property>
 
<!--用来指定hdfs的老大,namenode的地址-->
 
<name>fs.default.name</name>
 
<value>hdfs://hadoop01:8020</value>
 
</property> 
 
<property>
 
<!--用来指定hadoop运行时产生文件的存放目录-->  
 
<name>hadoop.tmp.dir</name>
 
<value>/opt/servers/hadoop-2.7.7/tmp</value>
 
</property>
3.修改 hdfs-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
  • 配置包括自身在内的备份副本数量到标签内
<property>
 
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
 
<!--伪分布式模式,此值必须为1-->
 
<name>dfs.replication</name>
 
<value>2</value>
 
</property>
 
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
 
<property>
 
<name>dfs.permissions</name>
 
<value>false</value>
 
</property>
4.修改 mapred-site.xml

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

<property> 
 
<!--指定mapreduce运行在yarn上-->
 
<name>mapreduce.framework.name</name>
 
<value>yarn</value>
 
</property>
5.修改 yarn-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml
  • 配置:粘贴高亮部分到标签内
<property>
 
<!--指定yarn的老大resourcemanager的地址-->
 
<name>yarn.resourcemanager.hostname</name>
 
<value>hadoop01</value>
 
</property>
 
<property>
 
<!--NodeManager获取数据的方式-->
 
<name>yarn.nodemanager.aux-services</name>
 
<value>mapreduce_shuffle</value>
 
</property>
6.修改slaves
vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01
hadoop02
hadoop03
7.配置hado
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME
8.分发文件到hadoop02、hadoop03服务器
cd /opt/servers/
scp -r hadoop-2.7.7/ hadoop02:$PWD
scp -r hadoop-2.7.7/ hadoop03:$PWD
9.hadoop02、hadoop03服务器配置hadoop的环境变量
vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME
启动
1.初始化
hdfs namenode -format
2.启动
start-all.sh
3.停止
stop-all.sh
4.测试
jps
5.停止服务
stop-all.sh
6.访问浏览器

windows的浏览器中访问

hdfs集群访问地址

http://hadoop01:50070/

yarn集群访问地址

http://hadoop01:8088/

安装成功!

补充:可以按照组件启动服务
start-dfs.sh
start-yarn.sh

也可以单独启动一个服务

在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode 
在每个从节点上使用以下命令启动 HDFS DataNode: 
hadoop-daemon.sh start datanode 
在主节点上使用以下命令启动 YARN ResourceManager: 
yarn-daemon.sh  start resourcemanager 
在每个从节点上使用以下命令启动 YARN nodemanager: 
yarn-daemon.sh start nodemanager

6.hadoop集群初体验

6.1、HDFS 使用初体验

从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下

hadoop fs -mkdir -p /test/input

hadoop fs -put /root/install.log /test/input

6.2、mapreduce程序初体验

在 Hadoop 安装包的

hadoop2.7.7/share/hadoop/mapreduce 下有官方自带的mapreduce 程序。我们可以使用如下的命令进行运行测试。

示例程序jar:

hadoop-mapreduce-examples-2.7.7.jar

计算圆周率:

hadoop jar /opt/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 2 5

关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。

相关文章

微信公众号

最新文章

更多

目录