Hadoop op 1)

时间:2021-06-02 04:42:24

设置yarn.scheduler.fair.user-as-default-queue =fasle, 就会阻止每一个用户使用自己默认的队列。

设置yarn.scheduler.fair.allow-underclared-pools =true 就允许用户在执行任务的时候创建指定的不存在的队列。

存储在sequencefile中的key value不一定需要是实现writable接口的类,所有的类似均可以序列化和反序列化。

Hive 尝试使用基于列的存储,可以提高hive的存储与执行效率?

HIve使用spark或tez这样的计算框架,可以提高查询返回的效率?

Crunch 是一个高级次的mapreduce pipe line的封装api,可以提高代码的利用率,使用java scala来写代码和udf,

可以称为是java版本的pig.

Which yarn daemon or service monitors a controller's per-application resource using (e.g. memory Cpu)?

Nodemanager or ApplicationMaster?

查看集群中可用的hdfs资源空间方法命令

Hdfs dfs -df / 就会显示当前可用的空间与已用空间

Hdfs dfsadmin -report 也会显示空间使用情况与每一个数据节点的健康与使用情况

HDFS应该可以寄生在任何可以的linux文件系统上,Ext3和4只是推荐的文件系统

CDH packing do what in KERBOS installation?

Create users or keytab files?

在小集群上,可以把nn和rm配置在一个节点上,在大的集群上,有足够的理由建议他们分开到不同的节点上。

原因1,主服务都对资源有一定的要求,避免在同一个节点上对资源进行争用。

原因2也是主要原因,考虑到集群的高可用,分部到不同的节点,减少了因同一个节点故障造成的问题。

网络机架感知hadoop框架默认的实现是使用基于脚本的映射,大部分情况下,我们不需要自己去实现那个接口,直接

使用这个基于脚本映射的接口即可。

Net.topology.script.file.name 这个脚本接口一个或多个主机名或ip列表,返回它们的机架信息。

机架感知技术对hadoop的影响

1 HDFS

hdfs在选择块副本的时候选择的策略与机架配置有关,先在某一节点(若在本节点上传,则是本节点存一份)存一

份,然后在这一节点的同机架存一份,第三份是存到此机架外,为了提高可用性。(以三个副本为例)

2。MR

MR在进行作业分配的时候也会考虑到尽可能使用机架内的网络资源,减少使用机架外的资源,来选择执行MR的任务

hadoop的控制脚本依赖ssh来执行集群范围的操作,例如登录到某节点启动相关进程。

所以ssh并不是必须的,你可以使用其他并行ssh的工具,如pdsh等

在使用hdfs的时候,fs.defaultFS有两个用途,一个是指定了hdfs集群的namenode的地址和端口。

另一个用途是指定了hdfs访问的默认路径。

由于第二个用途,客户端或或个用户可以为自己方便起见,使用自己的配置,不必要和其他节点保存一致。

给dfs.namenode.name.dir 配置多个目录,会自动生成多份的元数据作为备份,有机会做个测试。

同样的原理适用于dfs.namenode.checkpoint.dir属性,(不适用 于datanode.dir)

Yarn.nodemanager.aux-services = mapreduce_shuffle

Hadoop op 1)

yarn调度器根据配置来分配容器,yarn.scheduler.minimum-allocation-mb(默认1024M)和

Yarn.scheduler.maximum-allocation-mb (默认8192mb)。

对于yar.nodemanager.resource.cpu-vcores属性的设置,使用机器上总的核数,减去该节点上长服进程的数量。

如(datanode,nodemanager 和其他长服进程)

cpu的使用问题,nodemanager并不限制运行的container使用的cpu的核数,可能会出现滥用的情况。

一种解决方案是使用linux cgroups,需要配置 yarn.nodemanager.contain-executor.class 为LinuxContainerExecutor类。

对于IO操作,hadoop使用的默认4k的缓存,对于现在的机器来说,这个配置有一点低,可以调整 core-site.xml

中配置io.file.buffer.size属性,调整为128k是一个通用的选择。

Hadoop的安全机制中kerbos到底起到了哪些作用?

Hadoop op 1)

Hadooop.security.authentication=kerberos (core-site.xml)

Hadoop.security.authrozation=true

配置acls在hadoop-policy.xml指定哪些用户和组可以访问hadoop的服务。

为了减少集群的rpc调用,hadoop使用代理token的方式来减少对kdc的压力。同时保持安全性。

这种代理是由服务端来做的,如namenode和resourcemanager.

如果作业需要访问多个hdfs 集群,在kerberos的情况下,需要设置mapreduce.job.hdfs-servers 给一个逗号分开的列表。

HDFS Encrypted Transport

1。启用kerberos安全机制

2。Hadoop.rpc.protection=privacy in core-site.xml 在客户端和服务器端的配置。

  1. Set dfs.encrypt.data.transfer=true in hdfs-site.xml 在的有服务器端的配置。
  2. 重启所有进程
  1. 如果要配置shuffle的加密,配置mapreduce.shuffle.ssl.enabled 在mapred-site.xml