HDFS集群管理
集群规范
集群规模
Master节点场景
网络拓扑
集群构建和安装
安装Java
创建unix用户账号
安装Hadoop
SSH配置
配置Hadoop
格式化HDFS文件系统
启动或者停止守护进程
以hdfs用户身份启动HDFS守护进程
namenode和辅助namenode运行所在的机器通过Hadoop配置询问机器主机名来决定
通过以yarn用户身份在托管资源服务器的机器上启动yarn
这些脚本实际使用hadoop-deamon.sh脚本,YARN中是yarn-deamon.sh脚本,启动和停止hadoop守护进程。
启动作业历史服务器,是以mapred用户身份一下命令启动的
创建用户目录
Hadoop配置
hadoop的配置在etc/hadoop下,也可以放在其他目录下,在启动守护进程时指定-config选项或者配置环境变量HADOOP_CONF_DIR即可。
Hadoop配置文件
配置管理
按机器类划分
环境设置
Java
内存堆大小
守护进程需要多少内存
系统日志文件
默认情况下,Hadoop生成的系统日志文件存放在$HADOOP_HOME/log目录,可以通过
hadoop-env.sh
文件中的HADOOP_LOG_DIR来修改.运行在各台机器上的Hadoop进程会产生两类日志文件
以.log作为后缀名通过log4j记录,故障诊断的先检查该文件
以.out为后缀的,记录标准输出和标准错误日志,该文件只包含少量记录。系统仅保留最新的5个日志文件,旧的文件会附加一个介于1和5之间的数字后缀,5表示最旧的文件。
日志名称通过hadoop-env.sh中的
HADOOP_IDENT_STRING
中配置
SSH配置
借助SSH协议,用户在主节点上使用控制脚本就能在远程工作节点上运行一些列指令。自定义的SSH配置,可以减少连接超时设定可以避免控制脚本长时间等待宕机节点想要。
StricHostKeyChecking是一个很好的SSH设置,设置为no会自动将新主机键加到已知主机文件之中,该项默认值是ask,提示用户确认是否已验证来键指纹,因此不适合大型集群环境。
hadoop-env.sh中定义
HADOOP_SSH_OPTS
环境变量能够项SSH很多配置
Hadoop守护进程的关键属性
通过
[http://localhost:8088/conf](http://localhost:8088/conf)
查看当前RM的配置
典型的配置
典型的core-site配置
典型的hdfs-site.xml配置
典型的yarn-site配置
HDFS
namenode和datanode配置
HDFS关键属性
默认情况下,HDFS的存储目录存放在Hadoop的临时目录下(通过hadoop.tmp.dir配置,默认为
/tmp/hadoop-${user.name})
,在配置以上配置后,即使临时目录被情况数据仍然不会丢失。
YARN
运行YARN需要指定一台服务器为RM,将属性
yarn.resourcemanager.hostname
设置为运行RM的机器的主机名或IP地址。通过
yarn.resourcemanager.address
设置RM服务器地址,格式为主机-端口名MapReduce作业过程中产生的中间数据和工作文件被写道临时本地文件中,由于这些数据包括map任务输出数据,数据量可能非常大,因此必须保证YARN容器本地临时存储空间(由
yarn.nodemanager.local-dirs
属性设置)的容量足够大。yarn.nodemanager.local-dirs
属性使用一个逗号分割的目录名称列表,最后将这些目录分散到所有本地磁盘,以提升I/O操作的效率。通常情况下,YARN本地存储会使用与datanode数据块存储相同的磁盘和分区(但是不同的目录)。datanode数据块存储目录由
dfs.datanode.data.dir
属性指定。与MapReduce1不同,YARN没有tasktracker,它依赖shuffle句柄将map任务的输出送到reduce任务,Shuffle句柄是长期运行于NM的附加服务。可以在yarn-site.xml中配置
yarn.nodemanager.aux-services
属性设置为mapreduce_shuffle
来显示启用MapReduce的shuffle句柄。YARN的关键配置
YARN和MapReudce中的内存设置
MapReduce作业内存属性
YARN和MapReduce中的CPU设置
应用程序可以通过AM申请对应的核数,通过属性
yarn.nodemanager.resource.cpuvcores
可以设置NM分配给容器的核数量。应该设置为机器的总核数减去机器上运行的每个守护进程(datanode、NM核其他长期运行的进程)占用的核数
通过
mapreduce.map.cpu.vcores
核mapreduce.reduce.cpu.vcores
控制Mapreduce作业分配给map核reduce容器的核数量,默认都为1.
Hadoop守护进程的地址和端口
Rpc服务器属性
Http服务器属性
Hadoop的其他属性
集群成员
方便添加或移除节点,通过文件来指定一些允许作为datanode或NM加入集群的经过认证的机器,属性dfs.hosts记录允许作为datanode加入集群集群列表;属性
yarn.resourcemanager.nodes.include-path
记录允许作为节点管理器加入集群的机器列表。属性
dfs.hosts.exclude
和yarn.resourcemanager.nodes.exclude-path
代表指定的文件分别包含待解除的机器列表
缓冲区大小
HDFS块大小
保留的存储空间
默认情况下,datanode能够使用存储目录上所有的空间空间,如果计划将部分留给其他应用(非HDFS),则需要设置
dfs.datanode.du.reserverd
属性来指定待保留空间的大小,以字节为单位
回收站
Hadoop文件系统也有回收站,被删除的文件并未真正删除,仅只转移到回收站(一个特定文件夹),回收站的文件在被永久删除之前仍会至少保留一段时间。通过core-site.xml的fs.trash.interval属性(分钟单位)设置,默认情况下为0,表示回收站特性无效
Hadoop回收站设施是用户级特性,有文件系统shell直接删除的文件才会被放到回收站,用程序删除的会被直接删除。如果使用Trash类,构造一个Trash实例,调用
moveToTrash()
方法会把指定路径的文件移动到回收站。当回收站特性被启用,每个用户都有独立的回收站目录,即,home目录下的.Trash目录,恢复文件也容易:在.Trash的子目录找到文件,并将其移出.Trash目录
HDFS会自动删除回收站中的文件,手动删除超过时间的文件
hdfs dfs -expunge: 清空回收站
Trash类的expunge方法也有一下效果
作业调度
慢启动reduce
默认情况下,调度器会一直等待,直到该作业的5%的map任务已经结束才会调度reduce任务,对于大型作业来说,这个会降低集群利用率,在等待的过程中占用率reduce容器,可以将
mapreduce.job.reduce.slowstart.completedmaps
的值设置更大,如0.80,能够提供吞吐率。
短回路本地读
测试Hadoop集群
最后更新于