精华内容
下载资源
问答
  • 基于开源工具集的大数据网络安全态势感知及预警架构
  • ITSM开源工具iTop

    2018-08-02 14:41:09
    一款开源的ITSM管理工具iTop,基于CMDB和ITIL管理实践,适用于企业级的IT资源管理
  • 0 积分下载;文件大小:64.6 M;清晰完整中文扫描版,529页,无书签。
  • NLP开源工具详解

    千次阅读 2019-06-19 23:33:11
    面向工业应用的中文NLP开源工具集、基于PaddlePaddle深度学习框架打造的工业级NLP开源工具集。 一、文本分类 1、文本情感分析 情感是人类的一种高级智能行为,为了识别文本的情感倾向,需要深入的语义建模。另外,...

    一、PaddleNLP
    面向工业应用的中文NLP开源工具集、基于PaddlePaddle深度学习框架打造的工业级NLP开源工具集。
    一、文本分类
    1、文本情感分析
    情感是人类的一种高级智能行为,为了识别文本的情感倾向,需要深入的语义建模。另外,不同领域(如餐饮、体育)在情感的表达各不相同,因而需要有大规模覆盖各个领域的数据进行模型训练。为此,我们通过基于深度学习的语义模型和大规模数据挖掘解决上述两个问题。百度自主研发的中文特色情感倾向分析模型(Sentiment Classification,简称Senta)针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度。情感类型分为积极、消极。情感倾向分析能够帮助企业理解用户消费习惯、分析热点话题和危机舆情监控,为企业提供有利的决策支持。

    基于开源情感倾向分类数据集ChnSentiCorp评测结果如下表所示,此外,PaddleNLP还开源了百度基于海量数据训练好的模型,该模型在ChnSentiCorp数据集上fine-tune之后(基于开源模型进行Finetune的方法详见Github),可以得到更好的效果。

    BOW(Bag Of Words)模型,是一个非序列模型,使用基本的全连接结构。
    
    CNN(Convolutional Neural Networks),是一个基础的序列模型,能处理变长序列输入,提取局部区域之内的特征。
    
    GRU(Gated Recurrent Unit),序列模型,能够较好地解决序列文本中长距离依赖的问题。
    
    LSTM(Long Short Term Memory),序列模型,能够较好地解决序列文本中长距离依赖的问题。
    
    BI-LSTM(Bidirectional Long Short Term Memory),序列模型,采用双向LSTM结构,更好地捕获句子中的语义特征。
    
    ERNIE(Enhanced Representation through kNowledge IntEgration),百度自研基于海量数据和先验知识训练的通用文本语义表示模型,并基于此在情感倾向分类数据集上进行fine-tune获得。
    
    ERNIE+BI-LSTM,基于ERNIE语义表示对接上层BI-LSTM模型,并基于此在情感倾向分类数据集上进行Fine-tune获得。
    

    在这里插入图片描述
    项目地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification

    2.对话情绪识别
    对话情绪识别适用于聊天、客服等多个场景,能够帮助企业更好地把握对话质量、改善产品的用户交互体验,也能分析客服服务质量、降低人工质检成本。对话情绪识别(Emotion Detection,简称EmoTect),专注于识别智能对话场景中用户的情绪,针对智能对话场景中的用户文本,自动判断该文本的情绪类别并给出相应的置信度,情绪类型分为积极、消极、中性。

    基于百度自建测试集(包含闲聊、客服)和nlpcc2014微博情绪数据集评测效果如下表所示,此外,PaddleNLP还开源了百度基于海量数据训练好的模型,该模型在聊天对话语料上fine-tune之后,可以得到更好的效果。

    BOW:Bag Of Words,是一个非序列模型,使用基本的全连接结构。
    
    CNN:浅层CNN模型,能够处理变长的序列输入,提取一个局部区域之内的特征。
    
    TextCNN:多卷积核CNN模型,能够更好地捕捉句子局部相关性。
    
    LSTM:单层LSTM模型,能够较好地解决序列文本中长距离依赖的问题。
    
    BI-LSTM:双向单层LSTM模型,采用双向LSTM结构,更好地捕获句子中的语义特征。
    
    ERNIE:百度自研基于海量数据和先验知识训练的通用文本语义表示模型,并基于此在对话情绪分类数据集上进行fine-tune获得。
    
    

    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/emotion_detection

    二、文本匹配
    1、短文本语义匹配

    百度自主研发的短文本语义匹配语义匹配框架(SimilarityNet, SimNet)是一个计算短文本相似度的框架,可以根据用户输入的两个文本,计算出相似度得分。SimNet 在语义表示上沿袭了隐式连续向量表示的方式,但对语义匹配问题在深度学习框架下进行了 End-to-End 的建模,将point-wise与 pair-wise两种有监督学习方式全部统一在一个整体框架内。在实际应用场景下,将海量的用户点击行为数据转化为大规模的弱标记数据,在网页搜索任务上的初次使用即展现出极大威力,带来了相关性的明显提升。SimNet框架在百度各产品上广泛应用,主要包括BOW、CNN、RNN、MMDNN等核心网络结构形式,提供语义相似度计算训练和预测框架,适用于信息检索、新闻推荐、智能客服等多个应用场景,帮助企业解决语义匹配问题。

    基于百度海量搜索数据,PaddleNLP训练了一个SimNet-BOW-Pairwise语义匹配模型,在一些真实的FAQ问答场景中,该模型效果比基于字面的相似度方法AUC提升5%以上。基于百度自建测试集(包含聊天、客服等数据集)和语义匹配数据集(LCQMC)进行评测,效果如下表所示。

    LCQMC数据集以Accuracy为评测指标,而pairwise模型的输出为相似度,因此采用0.958作为分类阈值,相比于基线模型中网络结构同等复杂的CBOW模型(准确率为0.737),BOW_Pairwise的准确率提升为0.7532。
    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/similarity_net

    三、序列标注
    1、词法分析

    百度自主研发中文特色模型词法分析任务(Lexical Analysis of Chinese),输入是一个字符串,而输出是句子中的词边界和词性、实体类别。序列标注是词法分析的经典建模方式。LAC使用基于 GRU 的网络结构学习特征,将学习到的特征接入 CRF 解码层完成序列标注。CRF 解码层本质上是将传统 CRF 中的线性模型换成了非线性神经网络,基于句子级别的似然概率,因而能够更好的解决标记偏置问题。LAC能整体性地完成中文分词、词性标注、专名识别任务。

    基于自建的数据集上对分词、词性标注、专名识别进行整体的评估效果,效果如下表所示。此外,在飞桨开放的语义表示模型 ERNIE 上 finetune,并对比基线模型、BERT finetuned 和 ERNIE finetuned 的效果,可以看出会有显著的提升。

    项目代码:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/lexical_analysis

    四、文本生成
    1、机器翻译

    机器翻译(machine translation, MT)是利用计算机将一种自然语言(源语言)转换为另一种自然语言(目标语言)的过程,输入为源语言句子,输出为相应的目标语言的句子。Transformer是论文 「Attention Is All You Need 」中提出的用以完成机器翻译(machine translation, MT)等序列到序列(sequence to sequence, Seq2Seq)学习任务的一种全新网络结构。

    其同样使用了 Seq2Seq 任务中典型的编码器-解码器(Encoder-Decoder)的框架结构,但相较于此前广泛使用的循环神经网络(Recurrent Neural Network, RNN),其完全使用注意力(Attention)机制来实现序列到序列的建模,基于公开的 WMT’16 EN-DE 数据集训练 Base、Big 两种配置的Transformer 模型后,在相应的测试集上进行评测,效果如下表所示。

    项目代码:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/neural_machine_translation/transformer

    五、语义表示与语言模型
    1、语言表示工具箱

    BERT 是一个迁移能力很强的通用语义表示模型,以 Transformer 为网络基本组件,以双向 Masked Language Model和 Next Sentence Prediction 为训练目标,通过预训练得到通用语义表示,再结合简单的输出层,应用到下游的 NLP 任务,在多个任务上取得了 SOTA 的结果。

    ELMo(Embeddings from Language Models) 是重要的通用语义表示模型之一,以双向 LSTM 为网路基本组件,以 Language Model 为训练目标,通过预训练得到通用的语义表示,将通用的语义表示作为Feature 迁移到下游 NLP 任务中,会显著提升下游任务的模型性能。PaddleNLP发布了基于百科类数据训练的预训练模型。

    百度自研的语义表示模型ERNIE 通过建模海量数据中的词、实体及实体关系,学习真实世界的语义知识。相较于 BERT 学习原始语言信号,ERNIE直接对先验语义知识单元进行建模,增强了模型语义表示能力。

    这里我们举个例子:

    Learnt by BERT :哈 [mask] 滨是 [mask] 龙江的省会,[mask] 际冰 [mask] 文化名城。

    Learnt by ERNIE:[mask] [mask][mask] 是黑龙江的省会,国际 [mask] [mask] 文化名城。

    在 BERT 模型中,我们通过『哈』与『滨』的局部共现,即可判断出『尔』字,模型没有学习与『哈尔滨』相关的任何知识。而 ERNIE 通过学习词与实体的表达,使模型能够建模出『哈尔滨』与『黑龙江』的关系,学到『哈尔滨』是『黑龙江』的省会以及『哈尔滨』是个冰雪城市。

    训练数据方面,除百科类、资讯类中文语料外,ERNIE 还引入了论坛对话类数据,利用 DLM(Dialogue Language Model)建模 Query-Response 对话结构,将对话 Pair 对作为输入,引入 Dialogue Embedding 标识对话的角色,利用 Dialogue Response Loss学习对话的隐式关系,进一步提升模型的语义表示能力。

    ERNIE在自然语言推断,语义相似度,命名实体识别,情感分析,问答匹配多项NLP中文任务上效果领先。

    项目地址:
    https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

    https://github.com/PaddlePaddle/LARK/tree/develop/BERT

    https://github.com/PaddlePaddle/LARK/tree/develop/ELMo

    2、语言模型

    基于LSTM的语言模型任务是给定一个输入词序列(中文分词、英文tokenize),计算其PPL(语言模型困惑度,用户表示句子的流利程度),基于循环神经网络语言模型的介绍可以参阅论文「Recurrent Neural Network Regularization」。相对于传统的方法,基于循环神经网络的方法能够更好的解决稀疏词的问题。此任务采用了序列任务常用的RNN网络,实现了一个两层的LSTM网络,然后LSTM的结果去预测下一个词出现的概率。

    在small、meidum、large三个不同配置情况的ppl对比如下表所示。

    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/language_model

    六、复杂任务
    1、对话模型工具箱

    Auto Dialogue Evaluation

    对话自动评估模块主要用于评估开放领域对话系统的回复质量,能够帮助企业或个人快速评估对话系统的回复质量,减少人工评估成本。

    1)在无标注数据的情况下,利用负采样训练匹配模型作为评估工具,实现对多个对话系统回复质量排序;
    
    2)利用少量标注数据(特定对话系统或场景的人工打分),在匹配模型基础上进行微调,可以显著提高该对话系统或场景的评估效果。
    

    以四个不同的对话系统(seq2seq_naive/seq2seq_att/keywords/human)为例,使用对话自动评估工具进行自动评估。

    1)无标注数据情况下,直接使用预训练好的评估工具进行评估;在四个对话系统上,自动评估打分和人工评估打分spearman相关系数,如下表所示。
    在这里插入图片描述
    2) 对四个系统平均得分排序:
    在这里插入图片描述
    3)利用少量标注数据微调后,自动评估打分和人工打分spearman相关系数,如下表所示。
    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/auto_dialogue_evaluation

    Deep Attention Matching Network

    深度注意力机制模型是开放领域多轮对话匹配模型。根据多轮对话历史和候选回复内容,排序出最合适的回复。

    多轮对话匹配任务输入是多轮对话历史和候选回复,输出是回复匹配得分,根据匹配得分排序,更多内容请参阅论文「Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network」。

    两个公开数据集上评测效果如下表所示。
    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/deep_attention_matching

    对话通用理解模型DGU

    对话相关的任务中,Dialogue System常常需要根据场景的变化去解决多种多样的任务。任务的多样性(意图识别、槽位解析、DA识别、DST等等),以及领域训练数据的稀少,给Dialogue System的研究和应用带来了巨大的困难和挑战,要使得dialogue system得到更好的发展,需要开发一个通用的对话理解模型。基于BERT的对话通用理解模块(DGU: Dialogue General Understanding),通过实验表明,使用base-model(BERT)并结合常见的学习范式,在几乎全部对话理解任务上取得比肩甚至超越各个领域业内最好的模型的效果,展现了学习一个通用对话理解模型的巨大潜力。

    DGU针对数据集开发了相关的模型训练过程,支持分类,多标签分类,序列标注等任务,用户可针对自己的数据集,进行相关的模型定制。基于对话相关的业内公开数据集进行评测,效果如下表所示。
    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/dialogue_model_toolkit/dialogue_general_understanding

    2、知识驱动对话

    人机对话是人工智能(AI)中最重要的话题之一,近年来受到学术界和工业界的广泛关注。目前,对话系统仍然处于起步阶段,通常是被动地进行交谈,并且更多地将他们的言论作为回应而不是他们自己的倡议,这与人与人的谈话不同。因此,我们在一个名为知识驱动对话的新对话任务上设置了这个竞赛,其中机器基于构建的知识图与人交谈。它旨在测试机器进行类似人类对话的能力。

    我们提供基于检索和基于生成的基线系统。这两个系统都是由PaddlePaddle(百度深度学习平台)和Pytorch(Facebook深度学习框架)实现的。两个系统的性能如下表所示。
    在这里插入图片描述
    项目地址:
    https://github.com/baidu/knowledge-driven-dialogue/tree/master

    3、阅读理解

    在机器阅读理解(MRC)任务中,我们会给定一个问题(Q)以及一个或多个段落§/文档(D),然后利用机器在给定的段落中寻找正确答案(A),即Q + P or D => A. 机器阅读理解(MRC)是自然语言处理(NLP)中的关键任务之一,需要机器对语言有深刻的理解才能找到正确的答案。基于PaddlePaddle的阅读理解升级了经典的阅读理解BiDAF模型,去掉了char级别的embedding,在预测层中使用了pointer network,并且参考了R-NET中的一些网络结构,效果上有了大幅提升(在DuReader2.0验证集、测试集的表现见下表)。

    DuReader是一个大规模、面向真实应用、由人类生成的中文阅读理解数据集。DuReader聚焦于真实世界中的不限定领域的问答任务。相较于其他阅读理解数据集,DuReader的优势包括:

    问题来自于真实的搜索日志
    
    文章内容来自于真实网页
    
    答案由人类生成
    
     面向真实应用场景
    
    标注更加丰富细致
    

    在这里插入图片描述
    项目地址:
    https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/reading_comprehension

    参考:https://nlp.baidu.com/homepage/nlptools

    展开全文
  • 这10款开源工具,绝了!

    千次阅读 2020-05-10 14:00:00
    事实上,无论是学习,试验,还是在生产基础上进行部署,安全专业人员长期以来都将开源软件视为其工具包的重要组成部分。 下面我们为大家整理推荐 10 款,你应该了解/值得使用的开源安全工具。 Nessus Nessus 可以...

    作者:secist

    来自:FreeBuf.COM

    随着互联网的不断发展,安全问题也越来越受到企业的重视。但安全问题往往需要大量资金的投入,例如聘请安全工程师,产品研发,测试等流程。这对于那些原本就资金紧缺的企业而言,是绝对无法接受的。因此,为了减少在这方面的资金投入,许多安全人员都会选择使用一些开源软件来替代。

    事实上,无论是学习,试验,还是在生产基础上进行部署,安全专业人员长期以来都将开源软件视为其工具包的重要组成部分。 下面我们为大家整理推荐 10 款,你应该了解/值得使用的开源安全工具。

    Nessus

    Nessus 可以说是是目前全世界最多人使用的系统漏洞扫描与分析软件。根据sectools.org 的数据显示,Nessus 是最受欢迎的漏洞扫描器,也是目前使用的第三大流行安全程序。

    Nessus有免费版和商业版。目前的版本,Nessus 7.1.0,是一个商业版本,虽然它是免费的个人家庭使用。目前 2005 年的版本仍然是开源免费的。

    虽然 Tenable 保留了第 2 版,但它已经在几个不同的方向上分叉开发。Nessus 知识仍然是一项宝贵的职业技能。

    Snort

    正如成千上万的 IT 安全专业人员首先从 Nessus 学习漏洞扫描一样,Snort 一直是入侵检测系统(IDS)知识的起点。

    Snort 有三种工作方式:嗅探器,数据包记录器和网络入侵检测系统。因此,它可以是自动化安全系统的核心,也可以是一系列商业产品的组件。


    目前 Snort 为思科所有,Snort 将继续发展并由一个活跃的社区负责开发。

    Snort 作为一款重要的开源软件,可以说是安全从业者必须要了解和学习的软件之一。

    Nagios

    Nagios 是一款开源的免费网络监视工具,能有效监控 Windows、Linux 和Unix 的主机状态,交换机路由器等网络设备,打印机等。与许多其他开源软件包一样,Nagios 也提供免费版和商业版。

    Nagios Core 是开源项目的核心,基于免费的开源版本。可以通过插件监控单个产品或执行单个任务;大约有 50 个由 Nagios 开发的“官方”插件和超过3000 个社区贡献的插件。

    Nagios 的用户界面可以通过桌面,Web 或移动平台的前端进行修改,并且可以通过其中一种可用的配置工具来管理配置。

    Ettercap

    如果你需要测试你的企业网络以抵御中间人攻击(MITM),那么 Ettercap 将会是你的首选工具。该项目自 2001 年首次发布以来,一直在做一件事 – 即发起 MITM 攻击。

    Ettercap 当前支持四种基本的攻击模式:基于 IP,基于 MAC 以及两种基于ARP 策略的攻击。在扫描测试攻击的过程中,Ettercap 可以提供有关网络及其设备的大量信息。作为整体安全工具包的一部分,Ettercap 在 MITM 攻击方面做的堪称优秀。

    Infection Monkey

    Infection Monkey 是一款由以色列安全公司 GuardiCore 在 2016 黑帽大会上发布的数据中心安全检测工具,其主要用于数据中心边界及内部服务器安全性的自动化检测。

    用户界面是 Infection Monkey 的显著特点之一。尽管一些开源安全项目提供了极简主义的 UI 或依赖于 GUI 的插件或皮肤,但 Infection Monkey 具有与许多商业软件工具相同的 GUI。Infection Monkey 的源代码你可在 GitHub 上获取到。

    Delta

    相对于传统网络的安全测试,软件定义网络(SDN)的安全问题则是一个处在发展阶段的领域 – 这也是 Delta 被开发出来的重要原因之一。

    作为开放网络基金会(ONF)的一个项目,Delta 在 SDN 中寻找潜在的问题,并探讨这些问题以帮助确定它们的可利用性。Delta 具有内置的 fuzzing 功能,旨在探测已知或未知的网络漏洞。

    Delta 的代码和可执行程序可在 GitHub 上查看/下载。

    Cuckoo Sandbox

    有很多方法可以判断一个文件是否是安全的,但这些方法都存在一定的风险,Cuckoo sandbox 是一款著名的开源沙箱系统,用于安全的测试文件,基于虚拟化环境所建立的恶意程序分析系统能自动执行并且分析程序行为。

    The Sleuth Kit

    弄清楚攻击中发生的事情可能是防止未来入侵的关键一步。Sleuth Kit 是一个开源的电子取证调查工具,它可以用于从磁盘映像中恢复丢失的文件,以及为了特殊事件进行磁盘映像分析。

    Autopsy 工具是 sleuth kit 的一个网页接口,支持 sleuth kit 的所有功能。这个工具在 Windows 和 Linux 平台下都可获取到。两者目前都拥有大量活跃的用户群体,并被积极的开发和贡献。

    Lynis

     

    Lynis 是一款 Unix 系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。

    Lynis 代码目前被托管在 GitHub,其主要支持来自其创建者 Cisofy。Lynis 的特殊功能之一是,由于其 Unix 基础,它能够对流行的 IoT 开发板(包括Raspberry Pi)进行扫描和评估。

    Certbot


    加密对许多安全标准都很重要,实施加密可能会很复杂并且代价高昂,但 EFF 已经试图通过像 Certbot 这样的工具来减少这些困扰,Certbot 是一个开源的自动客户端,可以为你的 Web 服务器提取和部署 SSL/TLS 证书。


    最后考虑到很多人还没有开通微信视频号,或者开通了不知道怎么玩,可以关注一下我的视频号,我把我一个月涨粉近7000的经验全部告诉你:
    
    
    
    
    
    
    
    
    
    
    
    
    
    推荐阅读:我的电脑不联网,很安全,黑客:你还有风扇呢
    别再做韭菜了!
    加微信看朋友圈,每天分享优质文章、读书心得、生活日常,来做个点赞之交吧!
    
    展开全文
  • 大数据平台最常用的30款开源工具

    千次阅读 2019-08-12 17:13:28
    大数据平台是对海量结构化、非结构化、半机构化数据进行采集、存储、计算、统计、分析处理的一系列技术平台。...本文整理出了大数据平台常见的一些开源工具,并且依据其主要功能进行分类,以便大数据...

    大数据平台是对海量结构化、非结构化、半机构化数据进行采集、存储、计算、统计、分析处理的一系列技术平台。大数据平台处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据仓库工具无法处理完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等,汇集了当前IT领域热门流行的各类技术。

    本文整理出了大数据平台常见的一些开源工具,并且依据其主要功能进行分类,以便大数据学习者及应用者快速查找和参考。

    9188fea2a11c47f284a788d90edd550f.jpeg

    ▲ 大数据平台常见的一些工具汇集

    主要包含:语言工具类、数据采集工具、ETL工具、数据存储工具、分析计算、查询应用及运维监控工具等。以下对各工具作为简要的说明。

    一、语言工具类

    1、Java编程技术

    Java编程技术是目前使用最为广泛的网络编程语言之一,是大数据学习的基础。

    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,拥有极高的跨平台能力,是一种强类型语言。可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具。

    最重要的是,Hadoop以及其他大数据处理技术很多都是用Java。因此,想学好大数据,掌握Java基础是必不可少的。

    2、Linux命令

    许多大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制。因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。

    3、Scala

    Scala是一门多范式的编程语言,一方面继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台。大数据开发重要框架Spark就是采用Scala语言设计的,想要学好Spark框架,拥有Scala基础是必不可少的。因此,大数据开发需掌握Scala编程基础知识!

    4、Python与数据分析

    Python是面向对象的编程语言,拥有丰富的库,使用简单,应用广泛,在大数据领域也有所应用,主要可用于数据采集、数据分析以及数据可视化等。因此,大数据开发需学习一定的Python知识。

    二、 数据采集类工具

    1、Nutch

    Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。

    2、Scrapy

    Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架,可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。大数据的采集需要掌握Nutch与Scrapy爬虫技术。

    三、 ETL工具

    1、Sqoop

    Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库,学习使用Sqoop对关系型数据库数据和Hadoop之间的导入有很大的帮助。

    2、Kettle

    Kettle是一个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多,其数据抽取高效稳定。

    四、 数据存储类工具

    1、Hadoop分布式存储与计算

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算,因此,需要重点掌握。

    除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!

    2、Hive

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。相对于用Java代码编写MapReduce来说,Hive的优势明显:快速开发,人员成本低,可扩展性(自由扩展集群规模),延展性(支持自定义函数)。十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。

    3、ZooKeeper

    ZooKeeper是一个开源的分布式协调服务,是Hadoop和HBase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等。在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。

    4、HBase

    HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。

    5、Redis

    Redis是一个Key-Value存储系统,其出现很大程度补偿了Memcached这类Key/Value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,Java,Perl,Object-C,Python,Ruby,Erlang等客户端。使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。

    6、Kafka

    Kafka是一种高吞吐量的分布式发布订阅消息系统,其在大数据开发应用上的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。大数据开发需掌握Kafka架构原理及各组件的作用和使用方法及相关功能的实现。

    7、Neo4j

    Neo4j是一个高性能的NoSQL图形数据库,具有处理百万和T级节点和边的大尺度处理网络分析能力。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。

    8、Cassandra

    Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable,其主要功能比Dynamo(分布式的Key-Value存储系统)更丰富。这种NoSQL数据库最初由Facebook开发,现已被1500多家企业组织使用,包括苹果、欧洲原子核研究组织(CERN)、康卡斯特、电子港湾、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netflix、Reddit等。是一种流行的分布式结构化数据存储方案。

    9、SSM

    SSM框架是由Spring、Spring MVC、MyBatis三个开源框架整合而成,常作为数据源较简单的Web项目的框架。大数据开发需分别掌握Spring、Spring MVC、MyBatis三种框架的同时,再使用SSM进行整合操作。

    五、 分析计算类工具

    1、Spark

    Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、Spark RDD部署与资源分配、Spark Shuffle、Spark内存管理、Spark广播变量、Spark SQL、Spark Streaming以及Spark ML等相关知识。

    2、Storm

    Storm 是自由的开源软件,一个分布式的、容错的实时计算系统,可以非常可靠的处理庞大的数据流,用于处理Hadoop的批量数据。Storm支持许多种编程语言,并且有许多应用领域:实时分析、在线机器学习、不停顿的计算、分布式RPC(远过程调用协议,一种通过网路从远程计算机程序上请求服务)、ETL等等。

    Storm的处理速度惊人:经测试,每个节点每秒钟可以处理100万个数据元组。

    3、Mahout

    Mahout目的是“为快速创建可扩展、高性能的机器学习应用程序而打造一个环境”。主要特点是为可伸缩的算法提供可扩展环境、面向Scala/Spark/H2O/Flink的新颖算法、Samsara(类似R的矢量数学环境),它还包括了用于在MapReduce上进行数据挖掘的众多算法。

    4、Pentaho

    Pentaho是世界上最流行的开源商务智能软件,以工作流为核心的、强调面向解决方案而非工具组件的、基于Java平台的BI套件。包括一个Web Server平台和几个工具软件:报表、分析、图表、数据集成、数据挖掘等,可以说包括了商务智能的方方面面。

    Pentaho的工具可以连接到NoSQL数据库。大数据开发需了解其使用方法。

    六、 查询应用类工具

    1、Avro与Protobuf

    Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。

    2、Phoenix

    Phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。

    3、Kylin

    Kylin是一个开源的分布式分析引擎,提供了基于Hadoop的超大型数据集(TB/PB级别)的SQL接口以及多维度的OLAP分布式联机分析。最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

    4、Zeppelin

    Zeppelin是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。

    5、ElasticSearch

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式、支持多用户的全文搜索引擎,基于RESTful Web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装使用方便。

    6、Solr

    Solr基于Apache Lucene,是一种高度可靠、高度扩展的企业搜索平台, 是一款非常优秀的全文搜索引擎。知名用户包括eHarmony、西尔斯、StubHub、Zappos、百思买、AT&T、Instagram、Netflix、彭博社和Travelocity。大数据开发需了解其基本原理和使用方法。

    七、 数据管理类工具

    1、Azkaban

    Azkaban是由linked开源的一个批量工作流任务调度器,它是由三个部分组成:Azkaban Web Server(管理服务器)、Azkaban Executor Server(执行管理器)和MySQL(关系数据库),可用于在一个工作流内以一个特定的顺序运行一组工作和流程,可以利用Azkaban来完成大数据的任务调度,大数据开发需掌握Azkaban的相关配置及语法规则。

    2、Mesos

    Mesos 是由加州大学伯克利分校的AMPLab首先开发的一款开源集群管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架构。对数据中心而言它就像一个单一的资源池,从物理或虚拟机器中抽离了CPU、内存、存储以及其它计算资源,很容易建立和有效运行具备容错性和弹性的分布式系统。

    3、Sentry

    Sentry 是一个开源的实时错误报告工具,支持 Web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。使用Sentry对数据安全管理很有帮助。

    八、 运维监控类工具

    Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。大数据开发需掌握其安装、配置以及相关使用方法。

    作者:谢鹏

    来源:数据工匠俱乐部(ID:zgsjgjjlb)

    展开全文
  • 作为程序猿要想成长快,进阶快,拿到更高的薪资,付出的肯定比一般人多。想想黑马程序员刚毕业的...想要在技术的领域走的更远,这些开源工具,一定要熟悉,一个拥有5到10年工作的程序员,对于这些工具都非常熟悉。...

    作为程序猿要想成长快,进阶快,拿到更高的薪资,付出的肯定比一般人多。想想黑马程序员刚毕业的学员平均薪资都能达到万元以上,每个拿到高薪的学员,背后肯定付出了太多的努力。要知道在看准网统计的2018应届高校起薪的排行中,排行前三清华、北大、上海交通大学毕业生的薪资也才刚刚突破万元大关。

    想要在技术的领域走的更远,这些开源的工具,一定要熟悉,一个拥有5到10年工作的程序员,对于这些工具都非常熟悉。那么你呢?

    如果你对于这些工具还比较陌生,那从现在开始,正是学习这些工具的好时机。

    1. JIRA

    Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。

    JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。

    2. Git

    Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。

    最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。

    3. Jenkins

    Jenkins是一个用Java编写的开源自动化服务器。它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。主要用于:

    ● 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。

    ● 监控一些定时执行的任务。

    它是在项目中持续集成中最流行的工具之一。如果你还没有开始使用Jenkins,那就从现在开始吧。

    4. Selenium

    Selenium是Web应用程序最好的软件测试框架之一。它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。

    它还为Web浏览器自动化提供了各种工具和库。Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。

    5. Groovy

    Groovy 是一种基于 JVM 的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。你可以使用它编写构建脚本,测试脚本,甚至可以使用像Gradle和Spock这样的流行框架。

    6、Spock

     

    Spock 是适合 Java 和 Groovy 应用程序的一个测试框架。由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。如果你想提高你的单元测试技能,那么多花点时间在学习Spock上总是没错的。

    7. Maven

    如果你是一位经验丰富的Java开发人员,那么你一定非常了解Maven了,Apache Maven是一个构建和项目管理工具,基于项目对象模型(POM)的概念,Maven可用于管理项目的生成、报告和文档记录。

    Maven的另一个有用特性是依赖关系管理,由于我们在Java项目中使用了大量第三方库,因此手动管理每个JAR及其依赖项可能非常麻烦,Maven通过自动为你下载正确的JAR来帮助你解决问题

    8. Gradle

    Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具。它也是Android的默认构建工具。

    它引入了基于Groovy的特定于域的语言(DSL),而不是Apache Maven用于声明项目配置的XML,这样有利于配置项目依赖关系以及用户的项目自定义

    为什么选择Gradle在Ant或Maven?因为它结合了其他构建工具的最佳特性,例如它具有Ant的灵活性和控制,Ivy的依赖管理,Maven的配置和插件的约定,以及可以在Ant上使用Groovy DSL。这使它成为Java项目的最佳构建工具。

    9. Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。

    10. Linux

    初学Linux最好从Linux命令行基础知识开始,Linux是一种自由和开放源码的类Unix操作系统,在你的职业生涯中起到重要的作用,每一个Java开发者都应该学Linux。

    小伙伴这些开源工具,你用过几个呢?

    展开全文
  • svn管理开源工具

    2012-03-02 11:53:39
    svn管理开源工具 开源的工具 简单方便 便于svn服务器的管理
  • 十大开源网站 如果您在家工作,您会知道拥有一系列实用的工具至关重要,让您专注于重要的事情。 在工作时间里,工作越努力,工作日结束后,您就越容易放松。 我已经在家工作多年了,这是我精选的开源必须提供给...
  • 引言 大数据平台是对海量结构化、非结构化、半机构化数据进行采集、存储、计算、统计、分析处理的一系列技术平台。...此片文章整理出了大数据平台常见的一些开源工具,并且依据其主要功能进行分类,...
  • 55种数据可视化开源工具 数据可视化是获取表格或空间数据并以对人类友好的视觉方式进行传递的机制。 有几种开源工具可以帮助您创建有用的信息图。 在本文中,我们将介绍八个开源的数据可视化工具。 数据包装器 ...
  • AI的10个开源工具/框架

    千次阅读 2019-08-14 10:56:00
    这些可以使用应用程序编程接口(API)嵌入到其他软件工具中,用于软件工具和预测分析任务之间的交互。OpenNN的主要优点是其高性能。它采用C ++开发,可实现更好的内存管理和更高的处理速度,并通过OpenMP和GPU加速与...
  • 大学有一门专业课叫《UML课程设计》,这门课带给我的最大收益就是学会使用 Visio 作图。当然它不限于UML图,...国内出现了一些在线作图工具,无独有偶都是需要登录注册和付费的,或者一些其他方式,比如分享获得免...
  • 本博客主要是对网络上的一些关于中文自然语言处理开源工具的博客进行整理、汇总,如果有涉及到您的知识产品等,请联系本人已进行修改,也欢迎广大读者进行指正以及补充。本博客将尽量从工具的使用语言、功能等方面...
  • 上个月曾给大家推荐过百度在 GitHub 上开源的一款 OCR 文字识别工具 Panddle OCR,对于想研究具体技术底层原理的同学,这个项目值得一看。 https://github.com/PaddlePaddle/PaddleOCR 不过,今天我想另外推荐一款...
  • 六款开源RPA工具 不妨看一下用于RPA探索和开发的六款免费开源工具。 1. TagUI TagUI由AI Singapore维护,是RPA的命令行接口,可以在任何各大操作系统上运行。 (这是开源RPA工具的一个共同特点,有别于一些商业工具...
  • 来源:PaperWeekly本文共1700字,建议阅读6分钟。本文为你精选近期Github上的13款深度学习开源工具包和数据集,一起Star和Fork吧~01#Swift...
  • 10大热门人工智能开源工具(框架)

    万次阅读 2018-06-16 17:16:01
    10大热门人工智能开源工具(框架)摘要: 本文讲了10个热门的人工智能开源工具/框架。下面是我们今天要讲的10个热门的人工智能开源工具/框架。1.TensorFlowTensorFlow™是一个开源软件库,最初由Google Brain Team...
  • CAD设计你需要以下几款开源工具

    千次阅读 2016-12-05 13:53:33
    随着各行各业的发展,CAD已经广泛应用于工业、服装、建筑以及电子产业等设计领域,下面为大家介绍几款CAD设计开源工具,希望对大家有所帮助。
  • 在 Windows 平台上以前一直使用 ASN1 VIEW 工具软件查看 ASN.1 编码数据,其界面如下: 现在在网上又找到了另一个类似的工具软件 ASN.1 Editor,该软件的功能包括:显示、编辑、格式化及转换 ASN.1 编码格式的...
  • 滴滴开源工具 -- DoraemonKit

    千次阅读 2019-02-14 10:38:47
    DoraemonKit (哆啦A梦)是一个功能集合面板,能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合...
  • 声纹识别开源工具

    万次阅读 2018-03-26 21:38:18
    1.MSR Identity Toolkit ,微软开源工具箱,MATLAB版本,包含GMM-UBM和I-vector的demo,简单易用。下载地址 2.Alize,主要包括GMM-UBM、I-vector andJFA三种传统的方法,C++版,简单易用。 3.kaldi,当下十分流行...
  • 开源的文本比较工具

    2017-11-20 11:53:58
    开源的文本比较工具(abcd@1234)你懂,大家上去看看学学学学
  • JSON文件导入MySQL数据库的开源工具

    千次阅读 2017-08-01 14:35:10
    1, Kettle工具 基于Java开发的工具,提供了可视化的模块拖拉,组成输入与输出作业。 功能强大,可支持多种文件格式,如csv, xml等格式。 2. mysqljsonimport 脚本式的工具, ...m
  • 滴滴-Doraemonkit开源工具使用

    千次阅读 2019-03-14 15:01:24
    Doraemonkit开源工具使用 工具背景: Doraemonkit是一款滴滴客户端研发团队开源的研发助手组件工具,可支持Android平台和IOS平台。 开发背景:(源自github) 1、DoraemonKit 能够快速让你的业务测试代码能够在这里...
  • ,LingPipe(开源自然语言处理的Java开源工具包) 中文分词java程序
  • 开源数据清洗工具,github,官网由于墙的原因,无法下载,共享到CSDN,方便大家下载。
  • 中文文章情感分析-开源工具分享

    万次阅读 2015-12-19 10:42:20
    提供一个开源的中文情感分析工具
  • 本文是《JVM 性能调优实战之:一次系统性能瓶颈的寻找过程》 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确...本文将介绍如何使用阿里开源工具 TP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 787,903
精华内容 315,161
关键字:

开源工具