集群分类
Hadoop的集群分为HDFS集群和YARN集群,两者逻辑上分离,物理上常在一起
- HDFS集群负责还海量数据的存储,集群中的角色主要有namenode,datanode,secondarynamenode
- Yarn集群负责海量数据运算时的资源调度,集群的角色主要有resourcemanager,nodemanager
- mapreduc其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDPS集群上,并且受到Yarn集群 的资源调度管理
集群部署
Hadoop的部署方式有三种:standalone(独立模式),pseudo-distributed(伪分布模式),cluster(集群模式),其中前两者是单机模式
- 独立模式又称为单机模式,仅1个机器运行一个Java进程,主要用于调试
- 伪分布模式也是在1个机器上运行HDFS的namdenode和datanode,yarn的resourcemanager,nodemanager.但分别启动单独的Java进程,主要用于调试
- 集群模式主要用于生产环境部署,会使用N台主机组成一个Hadoop集群,这种模式下,主节点和从节点部署分开部署在不同的服务器上
服务器准备
vm服务器,centos
采取nat联网的方式
服务器系统设置
- 同步时间
- 设置主机名
- 配置IP,主机名映射 vim /etc/hosts
- 配置ssh免密登录
免密码ssh设置
现在确认能否不输入口令就用ssh登录localhost:
$ ssh localhost
如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
- 配置防火墙
JDK安装
- 卸载openjdk
rpm -qa | grep java
rpm -e --nodeps XXXXX
- 下载jdk,配置环境变量 /ect/profile
安装包的目录结构
- etc存放配置文件
- sbin存放启动和关闭集群等命令
配置文件的修改
一般在主节点上进行修改,完成之后scp下发到其他各个从节点
配置hadoop
- hadoop-env.sh
设置jdk环境配置
vim hadoop-env.sh
export JAVA_HOME=/root/app/jdk1.8.0_65
- core-site.xml
configuration变迁下添加property
- 指定hadoop所使用的文件系统schema(URI),HDFS主节点的namenode地址,设置fs.defaultFS
- 指定hadoop运行时产生的文件的存储目录hadoop.tmp.dir,默认为/tmp/hadoop-${user.name}
- hdfs-site.xml
- 指定hdfs副本的数量dfs.replication,默认是3份
- 设置hadoop.namenode.secondary.http-address
mapred-site.xml
指定mr运行时框架,默认是指定yarn,配置项为mapredue.framework.name,值为yarnyarn-site.xml
- 指定yarn主节点resourcemanager地址,配置项为yarn.resoucemanger.hostname,值为node-1
- 配置nodemanager上运行的附属服务,需要配置mapreduce_shuffle,才可以运行mr程序默认值。
配置项yarn.resourcemanager.aux-service,值为mapreduce_shuffle
slave文件
将hadoop添加到环境变量中
远程拷贝批量下发hadoop配置
scp -r /export/server/hadoop-2.7/ root@node-2:/export/server/
scp -r /etc/profile root@node-2:/etc/
source /etc/profile
其他
- **-default.xml文件里设置了Hadoop默认的配置选项,如果用户没有更改,里面的选项将会生效
- **-site.xml配置了用户需要自定义的配置选项,如果有配置,将会覆盖默认的配置
Hadoop集群启动
要启动Hadoop集群,需要启动HDFS集群和Yarn集群,首次启动时,必须进行格式化,并且格式化只能进行一次。
- 格式化的本质就是对文件系统的初始化操作,创建一些自己所需要的文件。
- 格式化之后集群启动成功,后续不能进行格式化,因为首次格式化之后,会为集群生成一个唯一标志clusterID,如果重新进行初始化,集群ID将会发生变化,导致集群内服务找不到集群clusterID
- 格式化必须在主角色namenode上进行
启动的方式包括两种单一服务启动和脚本一键启动(主节点机器上执行,前提是配置了slave文件和ssh免密登录)
启动完成之后,使用jps命令查看