`

Hadoop实战-中高级部分 之 Hadoop 管理

阅读更多

 

第一部分:HDFS管理
命令行工具
•HDFS文件系统检查工具FSCK
•用法:hadoop fsck [ GENERIC_OPTIONS] <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
•命令选项描述<path>检查的起始目录。
•-move移动受损文件到/lost+found-delete删除受损文件。
•-openforwrite打印出写打开的文件。
•-files打印出正被检查的文件。
•-blocks打印出块信息报告。
•-locations打印出每个块的位置信息。
•-racks打印出data-node的网络拓扑结构。
• d fsadmin
命令选项 描述
-report 报告文件系统的基本信息和统计信息。
-refreshNodes 重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。
-finalizeUpgrade 终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。
命令选项 描述
-metasave filename 保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的<filename>文件。对于下面的每一项,<filename>中都会一行内容与之对应 
1. Namenode收到的Datanode的心跳信号 
2. 等待被复制的块 
3. 正在被复制的块 
4. 等待被删除的块
-setQuota <quota> <dirname>...<dirname> 为每个目录 <dirname>设定配额<quota>。目录配额是一个长整型整数,强制限定了目录树下的名字个数。 
命令会在这个目录上工作良好,以下情况会报错:
1. N不是一个正整数,或者 
2. 用户不是管理员,或者 
3. 这个目录不存在或是文件,或者 
4. 目录会马上超出新设定的配额。
-upgradeProgress status | details | force 请求当前系统的升级状态,状态的细节,或者强制升级操作进行。
-clrQuota <dirname>...<dirname> 为每一个目录<dirname>清除配额设定。 
命令会在这个目录上工作良好,以下情况会报错:
1. 这个目录不存在或是文件,或者 
2. 用户不是管理员。 
如果目录原来没有配额不会报错。

规划管理HDFS数据 
•无论是做为开发者还是管理员了解HDFS目录结构与规划都是很重要的一件事情。
•它们可以帮助我们诊断问题
•如何管理HDFS数据也是我们需要研究的课题
•Namenode的目录结构:
           ${dfs.name.dir}/current /VERSION 
                                                  /edits 
                                                  /fsimage 
                                                  /fstime
    dfs.name.dir是hdfs-site.xml里配置的若干个目录组成的列表。
•通过设置Sencondary  NameNode解决edits log变大问题
•Sencondary  Namenode的目录结构:
           ${fs.checkpoint.dir}/current /VERSION 
                                                  /edits 
                                                  /fsimage 
                                                  /fstime
                                                       /previous.checkpoint/VERSION
                                                                                       /edits 
                                                                                  /fsimage 
                                                                                  /fstime
•fs.checkpoint.dir 属性位于core-site.xml
•previous.checkpoint 存储之前的保存的元数据
•Datanode 的目录结构:
           ${dfs.data.dir}/current /VERSION 
                                          /blk_id
 /blk_id.meta
                                                  …..
                                               /subdir0
                                                ….
•dfs.data.dir 属性位与hdfs-site.xml
•Subdir0 为子文件夹,防止HDFS一个目录下的文件块太多
•通过dfs.datanode.numblocks可以设置多少个块会生成一个子文件夹默认是64
 
 
安全模式
•安全模式是Namenode的一个状态,这种状态下,Namenode  
1. 不接受对名字空间的更改(只读) 
2. 不复制或删除块
•NameNode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式
• 默认为99.99%
•参数dfs.safemode.threshold.pct 位与hdfs-site.xml
•命令行hadoop dfsadmin -safemode enter | leave | get | wait
 
访问操作记录日志 
•HDFS可以记录文件系统的所有访问请求
•默认情况下该功能是关闭的
•可以通过设置log4j来开启该属性
•log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit= WARN设置为info
•该请求记录文件会单独存放
 
数据扫描块
•每一个DataNode都会运行一个数据扫描线程
•扫描线程定期的检查所有数据块以确保修复损坏的块
•周期可以设定
•dfs.datanode.scan.period.hourses 默认是504小时
•在UI部分可以查看检查的情况
•http://datanode:50075/blockScannerReport
•通过指定listblocks参数可以报告最新的状态
•http://datanode:50075/blockScannerReport?Listblocks
 
第二部分:MapReduce作业管理
命令行工具
• 查看 Job 信息
• hadoop job -list
• 杀掉 Job
• hadoop  job –kill
•指定路径下查看历史日志汇总
•hadoop job -history output-dir
•作业的更多细节
•hadoop job -history all output-dir
•打印map和reduce完成百分比和所有计数器
• hadoop job –status job_id
•杀死任务。被杀死的任务不会不利于失败尝试。
•hadoop jab -kill-task <task-id>
•使任务失败。被失败的任务会对失败尝试不利。
•hadoop job  -fail-task <task-id>
Hadoop mradmin
命令 说明
-refreshServiceAcl 重新装载ACL认证文件
-refreshQueues 刷新任务队列的信息
-refreshUserToGroupsMappings 刷新用户与用户组对应关系
-refreshSuperUserGroupsConfiguration 刷新用户组的配置
-refreshNodes 刷新JobTracker的主机配置信息
 
 
UI详细介绍
•UI 有足够的信息,供我们查看Job运行的信息与历史运行记录
•URL
•http://<jobtracker>50030/jobtracker
 
第三部分:Hadoop安全与权限的管理
•安全认证
•确保用户的身份
•授权
•确保用户的操作只能是在被允许的范围内
•用户
•Hadoop用户
•服务
•NameNode 等
 
•Hadoop原来的版本安全性比较低。
• Namenode 或者 J obtracker 缺乏安全认证机制
• DataNode 缺乏安全授权机制
•Hadoop提供了两种安全机制:Simple和Kerberos
 
Simple机制
 
•Simple机制(默认情况,Hadoop采用该机制)是JAAS协议与delegation token整合机制
•JAAS是Java 认证和授权服务(Java Authentication and Authorization Service)的缩写,是PAM框架的Java实现。
Kerberos 机制
•Kerberos 提供了这样一种机制,可以认证的密钥放到服务器上,用户在进行操作时,要先到认证服务器上做校验,只有通过,才可以进行相应的操作。
•Hadoop的安全问题
• 解决服务器到服务器的认证
• 解决 client 到服务器的认证
• 对用户级别上的认证并没有实现
Kerberos概念 
•Princal:被认证的个体,有一个名字和口令
•KDC: 是一个网络服务,提供ticket 和临时会话密钥
•Ticket:一个记录,客户用它来向服务器证明自己的身份,包括客户标识、会话密钥、时间戳。
•AS : 认证服务器
•TSG: 许可证服务器

Hadoop使用Kerberos好处 
•可靠: Hadoop 本身并没有认证功能和创建用户组功能,使用依靠外围的认证系统
•高效 :Kerberos使用对称钥匙操作,比SSL的公共密钥快
•操作简单: 用户可以方便进行操作,不需要很复杂的指令。比如废除一个用户只需要从Kerbores的KDC数据库中删除即可。
  
 

HDFS安全机制 
•Client去NameNode获取访问DataNode的凭证
•获得凭证后,才可以访问相应的数据库
•DataNode在启动时会在NameNode拿来相应的凭证
•客户端访问时,DataNode 会校验相应的凭证
 
MapReduce安全机制 
•作业提交
•所有关于作业的提交或者作业运行状态的追踪均是采用带有Kerberos认证的RPC实现的
•授权用户提交作业时,JobTracker会为之生 成一个令牌,该令牌将被作为job的一部分存储到HDFS上并通过RPC分发给各个TaskTracker,一旦job运行结束,该token失 效。
•任务运行
•用户提交作业的每个task均是以用户身份启动的,这样,一个用户的task便不可以向TaskTracker或者其他用户的task发送操作系统信号,最其他用户造成干扰。这要求为每个用户在所有TaskTracker上建一个账号。
•Shuffle
•reduce task对“请求URL”和“当前时间”计算HMAC-SHA1值,并将该值作为请求的一部分发动给TaskTracker,TaskTracker收到 后会验证该值的正确性
RPC 安全机制 
•用户发送RPC时,会将自己的用户名放在请求信息里
•RPCServer 接受到信息后, RPCServer 会校验授权,如果通过请发送给用户响应
 
 
Hadoop权限管理
•用户分组管理
•用户按组为单位组织管理
•可以限制用户使用的资源等内容
•Hadoop 使用Linux的用户与用户组
•作业管理
•作业提交权限控制
•作业运行状态查看权限控制。
•可限定可提交作业的用户
•可限定可查看作业运行状态的用户
•可限定普通用户只能修改自己作业的优先级,kill自己的作业
•高级用户可以控制所有作业。 
 
•这一点很重要,如果没有权限,会造成数据混乱
•主要是通过系统的用户组权限来进行控制
 
MapReduce权限管理
•MapReduce支持权限管理需使用Fair Scheduler或者 Capacity Scheduler
•为MapReduce添加权限管理一共分3步
•配置Fair Scheduler或者 Capacity Scheduler
•配置用户管理
•配置作业的ACL
配置权限
•配置Fair Scheduler
 
•配置用户管理
•配置Queue相关信息
•配置属性在mapre-site.xml
 
配置Queue的相关信息
<property>
  <name>mapred.acls.enabled</name>
  <value>true</value>
</property>
<property>
  <name>mapred.queue.names</name>
  <value>test,default</value>
</property> 属性 mapred.queue.names 是 queue 的所有名字,在这一名字中,必须有一个叫 “ default” 的 queue
<property>
  <name>mapred.queue.my_queue.acl-submit-job</name>
  <value> test</value>
</property>
 
 
<property>
  <name>mapred.queue.default.acl-administer-jobs</name>
  <value></value>
</property>
<property>
 <name>mapred.queue.my_queue.acl-administer-jobs</name>
  <value></value>
</property>
 
 
 
•mapred.queue.names是queue的所有名字
•必须有一个叫“default”的queue
• mapred.queue.<queue-name>.acl-submit-job,指定哪些user或者group可以向该queue中提交作业
•mapred.queue.<queue-name>.acl-administer-jobs,指定哪些user或者group可以管理该queue中的所有作业。
• 每个queue拥有的资源量和其他信息,在其他配置文件里指定
• mapred.queue.<queue-name>.acl-submit-job和mapred.queue.<queue-name>.acl-administer-jobs配置方法如下:
      用户和用户组之间用空格分开,用户之间用“,”分割,用户组之间用“,”分割,如果queue的属性值中只有用户组,则前面保留一个空格。
 
 
配置fair-scheduler.xml
<?xml version="1.0"?>
<allocations>
 <pool name=“ pool ">
    <minMaps> 4 </minMaps>
    <minReduces> 4 </minReduces>
     <maxRunningJobs> 4 </maxRunningJobs>
     <minSharePreemptionTimeout> 400 </minSharePreemptionTimeout>
      <weight> 1 .0</weight>
  </pool>
      <user name="bob">
      <maxRunningJobs> 4 </maxRunningJobs>
       </user>
       <poolMaxJobsDefault> 30 </poolMaxJobsDefault>
       <userMaxJobsDefault> 3 </userMaxJobsDefault>
       <defaultMinSharePreemptionTimeout> 500</defaultMinSharePreemptionTimeout>
       <fairSharePreemptionTimeout> 5 00</fairSharePreemptionTimeout>
</allocations>
 
 
作业管理
•在core-site.xmll中配置以下属性:
<property>
  <name>hadoop.security.authorization</name>
  <value>true</value>
</property>
•配置${HADOOP_CONF_DIR}/hadoop-policy.xml
•参数格式
•用户名与用户组之间用空格分开
•用户用户之间用“,”
•Tom,cat super,no
属性 说明
security.clinet.protocol.acl 控制访问HDFS的权限
security.datanode.protocol.acl
 
控制datanode到namenode的通信权限
 
security.clinet.datanode.protocol.acl 用户block恢复
security.namenode.protocol.acl 控制sencondary namenode与datanode权限
security.inter.datanode.protocol.acl
 
DataNode之前更新时间戳
security.task.umbilical.protocol.acl 控制task与tasktracker通信
security.refresh.policy.protocol.acl 控制更新作业管理配置文件
security.jobsubmission.protocol.acl 控制作业提交等权限
 
 
•作业提交时指定Pool来进行提交
•示例
   hadoop jar wordcount.jar wordcount  -D  pool.name= your_name input
       output
 
 
 
第四部分:Hadoop集群的状态监控与管理工具 
我们需要监督Hadoop什么
 
•CPU使用率
•硬盘使用情况
•网络负载
•进程服务是否正常运行
•。。。。
手动每项去查看,非常痛苦的事情,我们需要工具
 
  
Ganglia
•Ganglia 是什么
•Ganglia是一个跨平台可扩展的,高 性能计算系统下的分布式监控系统,如集群和网格。
•可以进行自动的进行信息的收集
•Ganglia 组件
•Gmond
•Gmetad
•Web前端
 
 
•Gmetad -服务端
•负责周期性的到各个datasource收集各个cluster的数据,并更新到rrd数据库中
•Gmond –客户端
•收集本机的监控数据,发送到其他机器上
•web 浏览界面
•一个基于PHP的监控界面,通常和Gmetad安装在同一个节点上
Ganglia优点
•自动收集数据
•图形界面
• 数据库rrdtool存储了历史数据
•Gmond 数据存储在内存中,使用开销比较小。
截图
 
日志监控
•设置日志级别
•在调试过程中非常的有用
•设置方式
•页面
•命令行
•hadoop  daemonlog –setlevel  jobtrackerhost-50030 packege level
•持久改变
•log.logger.org.apache.hadoop.mapred.JobTracker= level
•获得运行栈的信息
•http://namenode:50070/stacks

  转载请注明出处【 http://sishuok.com/forum/blogPost/list/0/5966.html
2
3
分享到:
评论

相关推荐

    Hadoop实战-中高级部分 PPT 和 源码 下载

    NULL博文链接:https://jenmhdn.iteye.com/blog/1677672

    Hadoop实战+Hadoop权威指南(第二版)+Hadoop源码分析(完整版)_PDF文件

    该压缩包包含Hadoop实战、Hadoop权威指南(第二版)、Hadoop源码分析(完整版)的内容,有助于初、中、高级工程师的理解和提升

    Hadoop实战手册

    这是一本hadoop实用手册,主要针对实际问题给出相应的解决方案。《hadoop实战手册》特色是以实践结合理论分析,手把手教...《hadoop实战手册》也可作为一本hadoop技术手册,针对要解决的相关问题,在工作中随时查阅。

    Hadoop核心技术

    资源名称:Hadoop核心技术内容简介:百度资深Hadoop技术专家和高级算法工程师撰写,结合百度大数据实践,直击企业痛点,多位大数据技术专家联袂推荐!从使用、原理、运维和开发4个方面深度讲解Hadoop最核心的技术这...

    Hadoop大数据分析与挖掘实战

    《Hadoop大数据分析与挖掘实战》共14章,分三个部分:基础篇、实战篇、高级篇。基础篇介绍了数据挖掘、Hadoop大数据的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例...

    Hadoop大数据分析与挖掘实战 epub

    《Hadoop大数据分析与挖掘实战》共14章,分三个部分:基础篇、实战篇、高级篇。基础篇介绍了数据挖掘、Hadoop大数据的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例...

    Hadoop应用开发技术详解.part1.rar

    从开发者角度对Hadoop分布式文件系统、Hadoop文件I/O、Hive、HBase、Mahout,以及MapReduce的工作原理、编程方法和高级应用进行系统深入的讲解内容细致,包含大量用于实际生产环境中的案例,实战性强。 本资料共包含...

    一线大厂级Flink大数据高级编程与案例实操 Flink运行架构实战课程 全部一线技术

    ├─flink-shaded-hadoop-2-uber-2.7.5-7.0.jar ├─flink-shaded-hadoop-2-uber-3.1.3-9.0.jar ├─kafka_2.11-2.1.0.tgz ├─netcat-win32-1.12.zip (6)\2.资料\02_Data;目录中文件数:6个 ├─AdClickLog.csv ├...

    Hbase+Spring boot实战分布式文件存储

    第4章 HBase进阶 讲解HBase的高级特性,常用的优化策略,协处理器等,并实战开发协处理器,将开发的协处理器加载到HBase测试环境,验证其功能 4-1 HBase优化策略一:服务端优化策略 4-2 HBase优化策略二:常用优化...

    10G的python数据分析与挖掘实战学习视频

    内容概要:10G的Python数据分析与挖掘实战学习视频,包括了Python3数据科学入门与实战,大数据入门到实战篇(Hadoop2.80),Python3实战Spark大数据分析及调度,数据分析与数据挖掘高级实战案例 适合人群:具备一定...

    HBase视频教程下载|基于微博数据应用的HBase实战开发

    课时17:使用API管理HBase之编程实战(续) 课时18:搭建分布式HBase集群之Hadoop部署 课时19:搭建分布式HBase集群之HBase部署 课时20:sqoop2部署 课时21:使用sqoop2将mysql数据导入到HBase 课时22:集群管理之...

    HBase企业应用开发实战

    博士, 中国大数据技术大会(原Hadoop in China)主席,中国计算机学会大数据专家委员会委员,中科院计算所副研究员, 近几年,大数据和开源越来越受到各行各业的关注,而作为大数据中不可替代的重中之重,Hadoop及其...

    R的极客理想 工具篇+高级开发篇+量化投资篇.zip

    书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、Hbase等技术的综合运用的解决方案,具有实战性,可操作性强。

    百度云盘 pdf《大数据架构和算法实现之路:电商系统的技术实战》百度云盘-带标签目录

    11.5.5 自主设计实战之 Flume、 整合方案………………….. 390 Kafka 和 Storm 的整合……410 11.5 案例实践…………………….. 391 11.6 更多的思考………·……………·424 11.5.1 数据模式的设计……....... . ...

    TipDM中用到的部分MATLAB接口

    第二部分是实战篇(第5~10章),以案例的形式对数据挖掘技术在金融、电信、电力、互联网、生产制造以及公共服务等行业的应用场景进行了讨论;首先介绍案例背景,然后阐述分析方法与过程,最后完成模型构建;在介绍...

    R的极客理想__工具篇

    书中内容涉及计算机、互联网、数据库、大数据、统计、金融等领域,详细总结了R语言在实际使用时与Java、MySQL、Redis、MongoDB、Cassandra、Hadoop、Hive、HBase等技术综合运用的解决方案,具有实战性及可操作性强等...

Global site tag (gtag.js) - Google Analytics