99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代什么是flume?它在大數(shù)據(jù)處理中起到什么作用?
什么是flume?它在大數(shù)據(jù)處理中起到什么作用?
2020-07-16
收藏

Flume 是 Apache 旗下的一款,開源,可靠性高,擴(kuò)展性高,管理簡(jiǎn)單,并且能夠支持客戶擴(kuò)展的數(shù)據(jù)采集系統(tǒng)。 Flume 是使用 JRuby 來構(gòu)建的,因此依賴于 Java 運(yùn)行環(huán)境。Flume 起初是由 Cloudera 的工程師設(shè)計(jì)出來,被 用于合并日志數(shù)據(jù)的系統(tǒng),后來也逐漸被應(yīng)用到處理流數(shù)據(jù)事件。

1.Flume概述

Flume能夠支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用來收集數(shù)據(jù);并且,F(xiàn)lume提供對(duì)簡(jiǎn)單處理數(shù)據(jù),并寫到各種數(shù)據(jù)接受方(可定制)的功能,其設(shè)計(jì)的原理同樣是基于將數(shù)據(jù)流(例如日志數(shù)據(jù))從各種網(wǎng)站服務(wù)器上匯集起來,并存儲(chǔ)到HDFS、HBase等集中存儲(chǔ)器中。Flume具有的可靠性機(jī)制以及故障轉(zhuǎn)移和恢復(fù)機(jī)制,還具有強(qiáng)大的容錯(cuò)性和容錯(cuò)能力。Flume 使用的是一個(gè)簡(jiǎn)單的可擴(kuò)展數(shù)據(jù)模型,允許在線分析應(yīng)用程序。

2.Flume特點(diǎn)

(1)  Flume是一個(gè)分布式、高可靠、高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。

(2)   Flume能夠采集文件,socket數(shù)據(jù)包等各種形式源數(shù)據(jù),又能夠?qū)⒉杉降臄?shù)據(jù)輸出到HDFS、hbase、hive、kafka等眾多外部存儲(chǔ)系統(tǒng)中

(3)   對(duì)于一般的采集需求,通過對(duì)flume的簡(jiǎn)單配置就能實(shí)現(xiàn)

(4) 即使 針對(duì)特殊場(chǎng)景 Flume也具備良好的自定義擴(kuò)展能力,所以,flume適合于大部分的日常數(shù)據(jù)采集

3.Flume的運(yùn)行機(jī)制

Flume的核心是一個(gè)agent,agent對(duì)外有兩個(gè)進(jìn)行交互的地方,一個(gè)是source,負(fù)責(zé)采集,接受數(shù)據(jù)的輸入,另一個(gè)是sink,數(shù)據(jù)的輸出,主要負(fù)責(zé)將數(shù)據(jù)發(fā)送到外部指定的目的地。在source接收到數(shù)據(jù)之后,會(huì)將數(shù)據(jù)傳送到channel,channel是通道,作為一個(gè)數(shù)據(jù)緩沖區(qū)會(huì)臨時(shí)將這些數(shù)據(jù)存放起來,之后sink會(huì)將channel中的數(shù)據(jù)發(fā)送到指定的地方。這里需要注意:只有sink將channel中的數(shù)據(jù)發(fā)送成功之后,channel才會(huì)刪除臨時(shí)數(shù)據(jù),就是這種機(jī)制保證了數(shù)據(jù)傳輸?shù)目煽啃耘c安全性。

單個(gè)agent采集數(shù)據(jù)

復(fù)雜結(jié)構(gòu):多級(jí)agent之間串聯(lián)

4.在大數(shù)據(jù)的業(yè)務(wù)處理過程中,F(xiàn)lume主要負(fù)責(zé)數(shù)據(jù)的采集。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }