文章目录
1.课程整体介绍
2.大数据介绍
什么是大数据?
简单来说大数据就是海量数据及其处理。
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [2] 中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity( 真实性)。——摘自百度百科
为什么要学习大数据?
拓宽发展面
大数据已经成为基础技术,现在最火的人工智能,物联网等就建立在大数据的基础上。
面向面试,提高认知深度,拓宽知识广度,增加面试筹码,提高薪资。
3.集群环境准备
3.1准备虚拟机
克隆三个虚拟机hadoop01、hadoop02、hadoop03均为NAT模式,其中hadoop01内存设置为1G(16G内存以上建议设置为2G),hadoop02和hadoop03为512M。
注:虚拟机登录的用户名和密码都是root
3.1.1 修改系统邮件提示
echo "unset MAILCHECK">> /etc/profile
3.1.2 关闭NetworkManager,防止网络出错
systemctl stop NetworkManager
systemctl disable NetworkManager
3.2修改为静态IP
修改IP地址,将:
第一台hadoop01的虚拟机ip地址改为:192.168.64.101
第二台hadoop02的虚拟机ip地址改为:192.168.64.102
第三台hadoop03的虚拟机ip地址改为:192.168.64.103
3.2.1配置文件
cd /etc/sysconfig/network-scripts #进入网络配置目录
dir ifcfg* #找到网卡配置文件
ifcfg-ens33 #找到版本最新的文件并修改
vim ifcfg-ens33
或者
vim /etc/sysconfig/network-scripts/ifcfg-ens33
3.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.64.101 #固定IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.64.2 #网关和NAT自动配置的相同,不同则无法登录
3.2.3重启网络
以下两种方式任选其一
service network restart #重启网络
systemctl restart network.service #重启网络centos7
3.2.4查看IP
ip addr #查看IP地址 ip add
3.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
3.4关闭防火墙
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #禁止防火墙开启启动
检查防火墙状态
[root@hadoop01 ~]# firewall-cmd --state #检查防火墙状态
false #返回值,未运行
3.5修改主机名
vi /etc/hostname
3.6修改hosts文件
vi /etc/hosts
在配置文件中增加ip地址映射
192.168.64.101 hadoop01
192.168.64.102 hadoop02
192.168.64.103 hadoop03
3.7三台机器重启
reboot
3.8设置免密登录
3.8.1三台机器生成公钥与私钥
ssh-keygen
执行该命令之后,按下三个回车即可
3.8.2拷贝公钥到同一台机器
三台机器执行命令:
ssh-copy-id hadoop01
3.8.3复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
在第一台机器上面执行以下命令
scp /root/.ssh/authorized_keys hadoop02:/root/.ssh
scp /root/.ssh/authorized_keys hadoop03:/root/.ssh
3.8.4测试
在hadoop01上进行远程登录测试
ssh hadoop02
不需要输入密码直接进入说明成功,exit退出
3.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;
3.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 /etc/profile hadoop02:/etc/
scp /etc/profile hadoop03:/etc/
source /etc/profile
测试
java -version
出现JDK版本号即为成功。
3.11修改windows中的hosts文件
在windows中的hosts文件里添加如下映射
192.168.64.101 hadoop01
192.168.64.102 hadoop02
192.168.64.103 hadoop03
4.Hadoop介绍
hadoop的定义:hadoop是一个分布式存储和分布式计算的框架。
分布式存储:是一个数据存储技术,将数据存储在多个服务上的(存储单元)磁盘空间中。目前解决的是大量数据存储的问题。
分布式计算:是一个计算科学技术,将一个大量的计算过程拆分成弱干个小的任务,由多个节点执行,最后做数据汇总。
4.1 hadoop的核心组件
HDFS:分布式存储组件
MapReduce:分布式计算组件
Yarn:资源调度管理器
4.2 hadoop的介绍及发展历史
- Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
- 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
——分布式文件系统(GFS),可用于处理海量网页的存储
——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。 - Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。
狭义上来说,hadoop就是单独指代hadoop这个软件,
广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件。
4.3 hadoop的历史版本介绍
0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性
3.x版本系列:基于2.x的版本进行多层优化(新特性),主要的是改变MapReduce的数据计算方式。
4.4 hadoop2.x架构模型
文件系统核心模块:
NameNode:集群当中的主节点,主要用于管理集群当中的各种元数据
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配
NodeManager:负责执行主节点APPmaster分配的任务
4.5Hadoop 的安装有三种方式
单机模式:直接解压,只支持MapReduce的测试,不支持HDFS,一般不用。
伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。
优点:功能完整。
缺点:性能低下。学习测试用。
完全分布式模式:集群方式安装,生产级别。
HA:高可用。
4.5.1 伪分布式部署
需要环境:
JDK,JAVA_HOME,配置hosts,关闭防火墙,配置免密登录等。
注意:我们只将其安装在hadoop01节点上。
进入目录
cd /opt/softwares
上传安装包并解压
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.defaultFS</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
4.5.2 完全分布式部署
安装环境服务部署规划
服务器IP | 192.168.64.101 | 192.168.64.102 | 192.168.64.103 |
---|---|---|---|
NameNode | |||
HDFS | Secondary NameNode | ||
DataNode | DataNode | DataNode | |
YARN | ResourceManager | ||
NodeManager | NodeManager | NodeManager | |
MapReduce | JobHistoryServer |
先在第一台机器hadoop01进行部署
注意:如果已安装伪分布模式,先删除格式化后生成的数据文件,其他请略过。
rm -rf /opt/servers/hadoop-2.7.7/tmp
进入目录
cd /opt/softwares
上传安装包并解压
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.defaultFS</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-->
<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.配置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
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集群访问地址
安装成功!
补充:可以按照组件启动服务
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
5.hadoop集群初体验
5.1、HDFS 使用初体验
从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下
hadoop fs -mkdir -p /test/input
hadoop fs -put /root/install.log /test/input
5.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 值。