Hadoop简单随机采样

(注:内容来自《Hadoop数据分析》)

基于Hadoop的两种采样模式:百分比采样和N样本采样。

1.随机百分比采样:

从样本中随机抽取一个比例的样本,一种方法是对每条数据简单地使用随机数生成器来产生[0,1]上均匀分布的随机数,并将其与期望的阈值大小进行比较,小于阈值的留下,大于阈值的跳过。

mapper.py

import random
# class Mapper可参考上一篇博客
class PercentSampleMapper(Mapper):

    def __init__(self,*args,**kwargs):
        self.percentage = kwargs.pop("percentage")
        super(PercentSampleMapper,self).__init__(*args,**kwargs)

    def map(self):
        for _, val in self:
            if random.random() < self.percentage:
                self.emit(None,val)
    
    if __name__=='__main__':
        mapper = PercentSampleMapper(sys.stdin,percentage=0.2)
        mapper.map 

接着,使用一个恒等reducer合并数据

2.随机抽取固定容量样本:

仍然对每条数据产生一个[0,1]上的均匀分布,然后通过堆维护一个容量为n的样本。

import random,heapd

class SampleMapper(Mapper):

    def __init__(self,n,*args,**kwargs):
        self.n = n
        super(SampleMapper,self).__init__(*args,**kwargs)
    
    def map(self):
        heap = [0]*self.n

        for value in self:
            #heappushpop 如存在random.random()>heap中的某值,则将heap中最小值弹出,并将random.random()随机插入到heap
            heapd.heappushpop(heap,(random.random(),value))
            for item in heap:
                self.emit(None,item)

class SampleReducer(Mapper):
    
    def __init__(self,n,*args,**kwargs):
        self.n = n
        supper(SampleReducer,self).__init__(*args,**kwargs)

    def reduce(self):
        heap = [0]*self.n

        for _,value in self:
            for value in values:
                heapd.heappushpop(heap,make_tuple(value))

        for item in heap:
            self.emit(None,item[1])

该方法获得的样本数是mapper的数量的n倍,通过单个reducer对数据重新抽取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kerberos Hadoop认证是一种基于Kerberos协议的Hadoop集群安全验证机制。下面是一个简单的教程来介绍如何配置和使用Kerberos Hadoop认证。 步骤1:安装Kerberos 首先,需要在Hadoop集群上安装和配置Kerberos。安装Kerberos包,并设置Kerberos配置文件。确保所有节点上的Kerberos配置文件都是相同的。 步骤2:配置HadoopHadoop的配置文件中,进行以下更改: - 将"security.authentication"设置为"kerberos",以启用Kerberos认证。 - 设置"security.authorization"为"true",启用Hadoop中的授权功能。 - 配置Kerberos相关的参数,如"dfs.namenode.kerberos.principal"和"dfs.namenode.keytab.file"等。 步骤3:生成和分发Kerberos认证凭证 使用Kerberos的"Kadmin"工具,创建和管理Kerberos主体和密钥表。为Hadoop服务和用户创建主体,并生成相应的密钥表文件。然后,将密钥表文件分发给Hadoop集群中的所有节点。 步骤4:配置Hadoop服务 在每个Hadoop服务的配置文件中,指定相应的Kerberos主体和密钥表文件。这将使得Hadoop服务能够通过Kerberos协议进行认证和授权。 步骤5:启动Hadoop集群 在所有节点上启动Hadoop集群。Hadoop服务会自动使用Kerberos认证配置进行验证。 步骤6:测试认证 使用Hadoop命令行工具或Web界面进行测试。输入有效的Kerberos主体和密码,确保能够访问和执行Hadoop操作。 需要注意的是,Kerberos Hadoop认证需要一些许可证和安全设置。此外,Kerberos的配置步骤可能因不同的操作系统和Hadoop版本而有所不同。因此,在实际部署和使用中,可能需要参考具体的操作指南和文档。 总结来说,Kerberos Hadoop认证是一种通过Kerberos协议确保Hadoop集群安全性的机制。通过正确配置和使用Kerberos,可以保护集群免受未授权的访问和数据泄露的威胁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值