Hadoop是apache旗下一个用java语言实现的开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量的计算机集群上对大型数据集进行分布式处理
Hadoop组件核心有
HDFS(分布式文件系统):解决海量数据存储
YARN(作业调度和集群资源管理的框架):解决资源任务调度
MAPREDUCE(分布式运算编程框架):解决海量数据计算
扩容能力:Hadoop是在可用的计算机集群间分配数据并完成计算任务,这些集群可以方便的扩展到数以千计的节点中
成本低:Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
高效率:通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快
可靠性:能自动维护数据的多份复制,并且在任务失败后能自动的重新部署计算任务,所以Hadoop的按位存储和处理数据的能力值得人们信赖
Hadoop集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起
HDFS集群负责海量数据存储,集群中的主要角色有:
NameNode、DataNode、SecondaryNameNode
YARN集群负责海量数据运算时的资源调度,集群中的主要角色有:
ResourceManager、NodeManager
Mapreduce是一个分布式运算编程框架,是应用程序开发包,有用户按照编程规范进行程序开发后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理
Hadoop部署方式分为三种:Standalone mode(独立模式)、Pseudo-Distributed mode(伪分布式模式)、Cluster mode(集群模式),其中前两种都是在单机部署
独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试
伪分布式也是在1个机器上运行HDFS的Namenode和DataNode、YARN的ResourceManager和NodeManager,但分别启动单独的java进程,主要用于调试
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上
查看系统时间命令:date
手动同步集群各机器时间
命令:date -s “2020-02-15 13:10:33”
网络同步时间
命令
yum install ntpdate
ntpdate http://cn.pool.ntp.org
编辑文件命令:vi /etc/sysconfig/network
在文件中编写如下内容
NETWORKING=yes
HOSTNAME=node01
编辑文件命令:vi /etc/hosts
在文件中配置如下内容:
192.168.149.101 node01
192.168.149.102 node02
192.168.149.103 node03
192.168.149.104 node04
一般配置主节点到从节点的免密登录
生成ssh免登录秘钥
命令:ssh-keygen -t rsa,输入完命令之后按四次enter键
执行完这个命令后,会生成id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
如:在node01机器上拷贝node02公钥:ssh-copy-id node02
拷贝完成之后,在node01上就可以免密登录node02
配置node03免密登录
同上操作配置node04免密登录
bin包:Hadoop最基本的管理脚本和使用脚本的目录
etc包:Hadoop配置文件所在目录
include包:对外提供的编程库头文件(具体动态库和静态库在lib目录中)
lib包:该目录包含了Hadoop对外提供的编程动态库与静态库,与include目录中的 头文件结合使用
libexec包:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启 动参数等基本信息
sbin包:Hadoop管理脚本所在目录,主要包含HDFS和YARN中各类服务的启动/ 关闭脚本
share包:Hadoop各个模块编译后的.jar包所在目录
上传hadoop-3.2.1.tar.gz到node01服务器
解压安装包命令:tar -zxvf hadoop-3.2.1.tar.gz
删除hadoop-3.2.1.tar.gz压缩包命令:rm -f hadoop-3.2.1.tar.gz
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,修改完毕后下发给其他各个从节点机器
进入hadoop配置文件目录中去
命令:cd hadoop-3.2.1/etc/hadoop/
文件中设置的是Hadoop运行时需要的环境变量,JAVA_HOME是必须设置的
找到jdk安装路径地址
命令:echo $JAVA_HOME
/usr/java/jdk1.8.0_60
编辑hadoop-env.sh文件命令:vi hadoop-env.sh
在该文件中需要配置jdk的环境变量,并指定NameNode、DataNode、SecondaryNameNode使用的用户,一般是root
export JAVA_HOME=/usr/java/jdk1.8.0_60
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_RESOURCEMANAGER_USER=root
配置core-site.xml文件
hadoop的核心配置文件,有默认的配置项core-default.xml
指定HADOOP所使用的文件系统schema,HDFS的老大(NameNode)的地址
如何配置?
打开hadoop-3.2.1---share----doc---hadoop----index.html文件
在打开的网页中点击Single Node Setup
找到core-site.xml的配置语句
修改成如下代码,hadoop3默认端口为9820
指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-&{user.name}
tmp目录会未经过同意,直接删除其中的文件,所以需要重新定义一个文件存储目录
指定HDFS副本的数量,默认备份3份
workers文件,里面写上从节点所在的主机名
编辑文件命令:vi workers
在改文件中配置hadoop集群的节点
node02
node03
node04
文件分发
使用scp命令下发hadoop-3.2.1到node02、node03、node04上
scp -r hadoop-3.2.1 root@node02:/root
scp -r hadoop-3.2.1 root@node03:/root
scp -r hadoop-3.2.1 root@node04:/root
配置hadoop3环境变量
编辑文件命令:vi /etc/profile
在文件中添加红色部分代码
export JAVA_HOME=/usr/java/jdk1.8.0_60
export HADOOP_HOME=/root/hadoop-3.2.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重新加载配置文件命令:source /etc/profile
文件分发
将/etc/profile配置文件分发到node02、node03、node04上
scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
在node02、node03、node04上重新加载配置文件
source /etc/profile
要启动Hadoop集群,需要启动HDFS和YARN两个集群
注意:首次启动HDFS时,必须对其进行格式化操作,本质上是一些清理和准备工作,因此此时的HDFS在物理上还是不存在的
格式化命令:hdfs namenode -format或者hadoop namenode -format
因为在配置core-site.xml文件的时候,配置了一个文件存储目录,该目录没有创建,在hadoop格式化的时候会自动创建,所以可以查看该目录是否创建来判断是否格式化成功
单个启动集群
如果配置了etc/hadoop/workers和ssh免密登录,则可以使用程序脚本启动所有hadoop两个集群的相关进程,在主节点所设定的机器上执行
启动HDFS集群命令:start-dfs.sh
通过jps可以查看每台虚拟机上启动的节点信息
node01
node02
node03
停止HDFS集群命令:stop-dfs.sh
启动YARN集群命令:start-yarn.sh
停止YARN集群:stop-yarn.sh
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述
Namenode:http://nn_host:port/ 默认9870
如:192.168.149.101:9870
YARN集群页面展示,默认端口号为8088。如:192.168.149.101:8088
接下来需要同时启动HDFS集群与YARN集群,启动命令在hadoop-2.6.5/sbin目录下
进入该目录命令:cd hadoop-2.6.5/sbin/
一键启动命令:start-all.sh