http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_posts/2015-10-26-apache-eagle-announce-cn.md ---------------------------------------------------------------------- diff --git a/_posts/2015-10-26-apache-eagle-announce-cn.md b/_posts/2015-10-26-apache-eagle-announce-cn.md new file mode 100644 index 0000000..82770fd --- /dev/null +++ b/_posts/2015-10-26-apache-eagle-announce-cn.md @@ -0,0 +1,187 @@ +--- +layout: post +title: "Apache Eagle æ£å¼åå¸ï¼åå¸å¼å®æ¶Hadoopæ°æ®å®å ¨æ¹æ¡" +date: 2015-10-26 19:24:33 +author: Hao Chen, Edward Zhang, Libin Sun, Jilin Jiang, Qingwen Zhao +categories: post +--- + +> *æè¦*ï¼æ¥åï¼eBayå ¬å¸éé宣叿£å¼å弿ºä¸çæ¨åºå®æ¶åå¸å¼Hadoopæ°æ®å®å ¨æ¹æ¡ - Apache Eagleï¼ä½ä¸ºä¸å¥æ¨å¨æä¾é«æåå¸å¼çæµå¼çç¥å¼æï¼å¹¶éææºå¨å¦ä¹ å¯¹ç¨æ·è¡ä¸ºå»ºç«Profile以宿¶æºè½å°ä¿æ¤Hadoopçæç³»ç»ä¸å¤§æ°æ®å®å ¨çè§£å³æ¹æ¡ã + +æ¥åï¼eBayå ¬å¸éé宣叿£å¼å弿ºä¸çæ¨åºåå¸å¼å®æ¶å®å ¨çæ§æ¹æ¡ ï¼ Apache Eagle (http://goeagle.io)ï¼è¯¥é¡¹ç®å·²äº2015å¹´10æ26æ¥æ£å¼å å ¥Apache æä¸ºåµåå¨é¡¹ç®ãApache Eagleæä¾ä¸å¥é«æåå¸å¼çæµå¼çç¥å¼æï¼å ·æé«å®æ¶ãå¯ä¼¸ç¼©ãææ©å±ã交äºå好çç¹ç¹ï¼åæ¶éææºå¨å¦ä¹ å¯¹ç¨æ·è¡ä¸ºå»ºç«Profile以å®ç°æºè½å®æ¶å°ä¿æ¤Hadoopçæç³»ç»ä¸å¤§æ°æ®çå®å ¨ã + +## èæ¯ +éçå¤§æ°æ®çåå±ï¼è¶æ¥è¶å¤çæåä¼ä¸æè ç»ç»å¼å§éåæ°æ®é©±å¨åä¸çè¿ä½æ¨¡å¼ãå¨eBayï¼æä»¬æ¥ææ°ä¸åå·¥ç¨å¸ãåæå¸åæ°æ®ç§å¦å®¶ï¼ä»ä»¬æ¯å¤©è®¿é®åææ°PBçº§çæ°æ®ï¼ä»¥ä¸ºæä»¬çç¨æ·å¸¦æ¥æ ä¸ä¼¦æ¯çä½éªãå¨å ¨çä¸å¡ä¸ï¼æä»¬ä¹å¹¿æ³å°å©ç¨æµ·éå¤§æ°æ®æ¥è¿æ¥æä»¬æ°ä»¥äº¿è®¡çç¨æ·ã + +è¿å¹´æ¥ï¼Hadoopå·²ç»éæ¸æä¸ºå¤§æ°æ®åæé¢åæå欢è¿çè§£å³æ¹æ¡ï¼eBayä¹ä¸ç´å¨ä½¿ç¨Hadoopææ¯ä»æ°æ®ä¸ææä»·å¼ï¼ä¾å¦ï¼æä»¬éè¿å¤§æ°æ®æé«ç¨æ·çæç´¢ä½éªï¼è¯å«åä¼åç²¾åå¹¿åææ¾ï¼å 宿们ç产åç®å½ï¼ä»¥åéè¿ç¹å»æµåæä»¥çè§£ç¨æ·å¦ä½ä½¿ç¨æä»¬çå¨çº¿å¸åºå¹³å°çã + +ç®åï¼eBayçHadoopé群æ»èç¹æ°æ®è¶ è¿10000å¤ä¸ªï¼åå¨å®¹éè¶ è¿170PBï¼æ´»è·ç¨æ·è¶ è¿2000å¤ãç°å¨ç¸å ³è§æ¨¡è¿å¨ä¸æå¢é¿ä¸ï¼åæ¶ä¸ºäºæ¯æå¤å åéæ±ï¼æä»¬å¼å ¥è¶æ¥è¶å¤æ ·çæ°æ®åå¨ååææ¹æ¡ï¼æ¯å¦HiveãMapReduecãSpark åHBaseçï¼éä¹å¸¦æ¥ç管çåçæ§çææè¶æ¥è¶ä¸¥å³»ï¼æ°æ®å®å ¨é®é¢äº¦æ¯å ¶ä¸æéè¦çä¹ä¸ã + +å¤§æ°æ®æ¶ä»£ï¼å®å ¨é®é¢å¼å§åå¾ç©ºåçå ³é®ï¼ç¹å«eBayä½ä¸ºå ¨çé¢å ççµååå¡å ¬å¸ï¼æä»¬å¿ é¡»ä¿è¯Hadoopä¸ç¨æ·æ°æ®çç»å¯¹å®å ¨ãé常æä»¬çå®å ¨æªæ½æ ¹æ®å¦ä¸å ç¹ ï¼è®¿é®æ§å¶ãå®å ¨éç¦»ãæ°æ®åç±»ãæ°æ®å å¯ä»¥å宿¶æ°æ®è¡ä¸ºçæ§ï¼ç¶èç»è¿å¹¿æ³çå°è¯åç ç©¶ï¼æä»¬æè¯å°æ²¡æä»»ä½å·²ç»åå¨ç产åæè è§£å³æ¹æ¡è½å¤å åæ»¡è¶³æä»¬é¢ä¸´æµ·é宿¶æ°æ®æµåå¤å åç¨ä¾åºæ¯ä¸æ°æ®è¡ä¸ºçæ§çéæ±ã为äºé¾è¶è¿é鸿æ²ï¼eBayå³å®ä»å¤´å¼å§æå»ºEagleã + + + +> âEagle æ¯å¼æºåå¸å¼å®æ¶Hadoopæ°æ®å®å ¨æ¹æ¡ï¼æ¯ææ°æ®è¡ä¸ºå®æ¶çæ§ï¼è½ç«å³çæµåºå¯¹æææ°æ®çè®¿é®ææ¶æçæä½ï¼å¹¶ç«å³éååºå¯¹çæªæ½â + +æä»¬ç¸ä¿¡Eagleå°æä¸ºHadoopæ°æ®å®å ¨é¢åçæ ¸å¿ç»ä»¶ä¹ä¸ï¼å æ¤æä»¬å³å®å°å®çåè½åäº«ç»æ´ä¸ªç¤¾åºãç®åæä»¬å·²ç»å°Eagleæèµ ç»Apache软件åºéä¼ä½ä¸ºApache åµåå¨é¡¹ç®å¼æºï¼ææè½å¤å弿ºç¤¾åºä¸ååä½å¼åï¼ä½¿å¾Eagle䏿åå±å£®å¤§ï¼å ±åæ»¡è¶³å¼æºç¤¾åºä¸æ´å¹¿æ³çéæ±ã + +Eagleçæ°æ®è¡ä¸ºçæ§æ¹æ¡å¯ç¨äºå¦ä¸å ç±»å ¸ååºæ¯ï¼ + +* çæ§Hadoopä¸çæ°æ®è®¿é®æµé +* æ£æµéæ³å ¥ä¾µåè¿åå®å ¨è§åçè¡ä¸º +* æ£æµå¹¶é²æ¢æææ°æ®ä¸¢å¤±åè®¿é® +* å®ç°åºäºçç¥ç宿¶æ£æµåé¢è¦ +* å®ç°åºäºç¨æ·è¡ä¸ºæ¨¡å¼çå¼å¸¸æ°æ®è¡ä¸ºæ£æµ + +Eagleå ·æå¦ä¸ç¹ç¹ï¼ + +* **é«å®æ¶**ï¼ æä»¬å åçè§£å®å ¨çæ§ä¸é«åº¦å®æ¶åå¿«éååºçéè¦æ§ï¼å æ¤è®¾è®¡Eagleä¹åï¼æä»¬ç«å°½å¯è½å°ç¡®ä¿è½å¨äºç§çº§å«æ¶é´å 产çåè¦ï¼ä¸æ¦ç»¼åå¤ç§å ç´ ç¡®è®¢ä¸ºå±é©æä½ï¼ç«å³éåæªæ½é»æ¢éæ³è¡ä¸ºã +* **å¯ä¼¸ç¼©**ï¼å¨eBay Eagle 被é¨ç½²å¨å¤ä¸ªå¤§åHadoopé群ä¸ï¼è¿äºéç¾¤æ¥ææ°ç¾PBçæ°æ®ï¼æ¯å¤©æ8亿以ä¸çæ°æ®è®¿é®æ¶é´ï¼å æ¤Eagleå¿ é¡»å ·æå¤çæµ·é宿¶æ°æ®çé«åº¦å¯ä¼¸ç¼©è½åã +* **ç®åæç¨**ï¼å¯ç¨æ§ä¹æ¯Eagle产åçæ ¸å¿è®¾è®¡ååä¹ä¸ãéè¿EagleçSandboxï¼ä½¿ç¨è ä» éæ°åé便å¯ä»¥è®¾ç½®å¥½ç¯å¢å¹¶å¼å§å°è¯ã为äºä½¿å¾ç¨æ·ä½éªå°½å¯è½ç®åï¼æä»¬å ç½®äºè®¸å¤å¾å¥½çä¾åï¼åªéç®åå°ç¹å»å æ¥é¼ æ ï¼ä¾¿å¯ä»¥è½»æ¾å°å®æçç¥å°åå»ºåæ·»å ã +* **ç¨æ·Profile**ï¼Eagle å ç½®æä¾åºäºæºå¨å¦ä¹ ç®æ³å¯¹Hadoopä¸ç¨æ·è¡ä¸ºä¹ æ¯å»ºç«ç¨æ·Profileçåè½ãæä»¬æä¾å¤ç§é»è®¤çæºå¨å¦ä¹ ç®æ³ä¾ä½ éæ©ç¨äºé对ä¸åHDFSç¹å¾éè¿è¡å»ºæ¨¡ï¼éè¿åå²è¡ä¸ºæ¨¡åï¼Eagleå¯ä»¥å®æ¶å°æ£æµå¼å¸¸ç¨æ·è¡ä¸ºå¹¶äº§çé¢è¦ã +* **弿º**ï¼Eagleä¸ç´æ ¹æ®å¼æºçæ åå¼åï¼å¹¶æå»ºäºè¯¸å¤å¤§æ°æ®é¢åç弿ºäº§åä¹ä¸ï¼å æ¤æä»¬å³å®ä»¥Apache许å¯è¯å¼æºEagleï¼ä»¥åé¦ç¤¾åºï¼åæ¶ä¹æå¾ è·å¾ç¤¾åºçåé¦ãåä½ä¸æ¯æã + + +## Eagleæ¦è§ + + + +#### æ°æ®æµæ¥å ¥ååå¨ï¼Data Collection and Storageï¼ +Eagleæä¾é«åº¦å¯æ©å±çç¼ç¨APIï¼å¯ä»¥æ¯æå°ä»»ä½ç±»åçæ°æ®æºéæå°Eagleççç¥æ§è¡å¼æä¸ãä¾å¦ï¼å¨Eagle HDFS 审计äºä»¶ï¼Auditï¼çæ§æ¨¡åä¸ï¼éè¿Kafkaæ¥å®æ¶æ¥æ¶æ¥èªNamenode Log4j Appender æè Logstash Agent æ¶éçæ°æ®ï¼å¨Eagle Hive çæ§æ¨¡åä¸ï¼éè¿YARN API æ¶éæ£å¨è¿è¡JobçHive æ¥è¯¢æ¥å¿ï¼å¹¶ä¿è¯æ¯è¾é«çå¯ä¼¸ç¼©æ§å容鿧ã + +#### æ°æ®å®æ¶å¤çï¼Data Processingï¼ + +**æµå¤çAPIï¼Stream Processing APIï¼Eagle** æä¾ç¬ç«äºç©çå¹³å°èé«åº¦æ½è±¡çæµå¤çAPIï¼ç®åé»è®¤æ¯æApache Stormï¼ä½æ¯ä¹å 许æ©å±å°å ¶ä»ä»»ææµå¤çå¼æï¼æ¯å¦Flink æè Samzaçãè¯¥å±æ½è±¡å 许å¼åè å¨å®ä¹çæ§æ°æ®å¤çé»è¾æ¶ï¼æ éå¨ç©çæ§è¡å±ç»å®ä»»ä½ç¹å®æµå¤çå¹³å°ï¼èåªééè¿å¤ç¨ãæ¼æ¥åç»è£ ä¾å¦æ°æ®è½¬æ¢ãè¿æ»¤ãå¤é¨æ°æ®Joinçç»ä»¶ï¼ä»¥å®ç°æ»¡è¶³éæ±çDAGï¼æåæ ç¯å¾ï¼ï¼åæ¶ï¼å¼åè ä¹å¯ä»¥å¾å®¹æå°ä»¥ç¼ç¨å°æ¹å¼å°ä¸å¡é»è¾æµç¨åEagle çç¥å¼ææ¡æ¶éæèµ·æ¥ãEagleæ¡æ¶å é¨ä¼å°æè¿°ä¸å¡é»è¾çDAGç¼è¯æåºå±æµå¤çæ¶æçåçåºç¨ï¼ä¾å¦Apache Storm Topology çï¼ä»äºå®ç°å¹³å°çç¬ç«ã + +__以䏿¯ä¸ä¸ªEagleå¦ä½å¤çäºä»¶ååè¦ç示ä¾ï¼__ + + StormExecutionEnvironment env = ExecutionEnvironmentFactory.getStorm(config); // storm env + StreamProducer producer = env.newSource(new KafkaSourcedSpoutProvider().getSpout(config)).renameOutputFields(1) // declare kafka source + .flatMap(new AuditLogTransformer()) // transform event + .groupBy(Arrays.asList(0)) // group by 1st field + .flatMap(new UserProfileAggregatorExecutor()); // aggregate one-hour data by user + .alertWithConsumer(âuserActivityâ,âuserProfileExecutorâ) // ML policy evaluation + env.execute(); // execute stream processing and alert + +**åè¦æ¡æ¶ï¼Alerting Frameworkï¼Eagle**åè¦æ¡æ¶ç±æµå æ°æ®APIãçç¥å¼ææå¡æä¾APIãçç¥Partitioner API 以åé¢è¦å»éæ¡æ¶çç»æ: + +* **æµå æ°æ®API** å è®¸ç¨æ·å£°æäºä»¶çSchemaï¼å æ¬äºä»¶ç±åªäºå±æ§ææãæ¯ä¸ªå±æ§çç±»åï¼ä»¥åå½ç¨æ·é ç½®çç¥æ¶å¦ä½å¨è¿è¡æ¶å¨æè§£æå±æ§çå¼çã +* **çç¥å¼ææå¡æä¾API** å 许å¼åè å¾å®¹æå°ä»¥æä»¶ç形弿©å±æ°ççç¥å¼æãWSO2 Siddhi CEP 弿æ¯Eagle ä¼å é»è®¤æ¯æççç¥å¼æï¼åæ¶æºå¨å¦ä¹ ç®æ³ä¹å¯ä½ä¸ºå¦ä¸ç§çç¥å¼ææ§è¡ã +* **æ©å±æ§** Eagleççç¥å¼ææå¡æä¾APIå è®¸ä½ æå ¥æ°ççç¥å¼æ + + public interface PolicyEvaluatorServiceProvider { + public String getPolicyType(); // literal string to identify one type of policy + public Class<? extends PolicyEvaluator> getPolicyEvaluator(); // get policy evaluator implementation + public List<Module> getBindingModules(); // policy text with json format to object mapping + } + public interface PolicyEvaluator { + public void evaluate(ValuesArray input) throws Exception; // evaluate input event + public void onPolicyUpdate(AlertDefinitionAPIEntity newAlertDef); // invoked when policy is updated + public void onPolicyDelete(); // invoked when policy is deleted + } + +* **çç¥Partitioner API** å 许çç¥å¨ä¸åçç©çèç¹ä¸å¹¶è¡æ§è¡ãä¹å è®¸ä½ èªå®ä¹çç¥Partitionerç±»ãè¿äºåè½ä½¿å¾çç¥åäºä»¶å®å ¨ä»¥åå¸å¼çæ¹å¼æ§è¡ã +* **å¯ä¼¸ç¼©æ§** Eagle éè¿æ¯æçç¥çååºæ¥å£æ¥å®ç°å¤§éççç¥å¯ä¼¸ç¼©å¹¶åå°è¿è¡ + + public interface PolicyPartitioner extends Serializable { + int partition(int numTotalPartitions, String policyType, String policyId); // method to distribute policies + } + + + +  + + > å¯ä¼¸ç¼©çEagleçç¥æ§è¡æ¡æ¶ + +**æºå¨å¦ä¹ 模å:** +Eagle æ¯ææ ¹æ®ç¨æ·å¨Hadoopå¹³å°ä¸åå²ä½¿ç¨è¡ä¸ºä¹ æ¯æ¥å®ä¹è¡ä¸ºæ¨¡å¼æç¨æ·Profileçè½åãæ¥æäºè¿ä¸ªåè½ï¼ä¸éè¦å¨ç³»ç»ä¸é¢å 设置åºå®ä¸´çå¼çæ åµä¸ï¼ä¹å¯ä»¥å®ç°æºè½å°æ£æµåºå¼å¸¸çè¡ä¸ºãEagleä¸ç¨æ·Profileæ¯éè¿æºå¨å¦ä¹ ç®æ³çæï¼ç¨äºå¨ç¨æ·å½å宿¶è¡ä¸ºæ¨¡å¼ä¸å ¶å¯¹åºçå岿¨¡å模å¼åå¨ä¸å®ç¨åº¦ç差弿¶è¯å«ç¨æ·è¡ä¸ºæ¯å¦ä¸ºå¼å¸¸ãç®åï¼Eagle å ç½®æä¾ä»¥ä¸ä¸¤ç§ç®æ³æ¥æ£æµå¼å¸¸ï¼åå«ä¸ºç¹å¾å¼åè§£ï¼Eigen-Value Decompositionï¼å å¯åº¦ä¼°è®¡ï¼Density Estimationï¼ãè¿äºç®æ³ä»HDFS 审计æ¥å¿ä¸è¯»åæ°æ®ï¼å¯¹æ°æ®è¿è¡åå²ã审æ¥ã交ååæï¼å¨ææ§å°ä¸ºæ¯ä¸ªç¨æ·ä¾æ¬¡å建Profile è¡ä¸ºæ¨¡åã䏿¦æ¨¡åçæï¼Eagleç宿¶æµçç¥å¼æè½å¤è¿ä¹å®æ¶å°è¯å«åºå¼å¸¸ï¼å辨å½åç¨æ·çè¡ä¸ºå¯ççæè ä¸ä»ä»¬çåå²è¡ä¸ºæ¨¡åä¸ç¸ç¬¦ã + +ä¸å¾ç®åæè¿°äºç®åEagleä¸ç¨æ·Profileç离线è®ç»å»ºæ¨¡åå¨çº¿å®æ¶çæµçæ°æ®æµï¼ + + + +> ç¨æ·Profile 离线è®ç»ä»¥åå¼å¸¸çæµæ¶æ + +åºäºç¨æ· ProfileçEagleå¨çº¿å®æ¶å¼å¸¸çæµæ¯æ ¹æ®Eagleçéç¨çç¥æ¡æ¶å®ç°çï¼ç¨æ·Profileåªæ¯è¢«å®ä¹ä¸ºEagleç³»ç»ä¸ä¸ä¸ªçç¥èå·²ï¼ç¨æ·Profileççç¥æ¯éè¿ç»§æ¿èªEagleç»ä¸çç¥æ§è¡æ¥å£çæºå¨å¦ä¹ Evaluatoræ¥æ§è¡ï¼å ¶çç¥çå®ä¹ä¸å æ¬å¼å¸¸æ£æµè¿ç¨ä¸éè¦çç¹å¾åéçï¼å¨çº¿æ£æµä¸ç¦»çº¿è®ç»ä¿æä¸è´ï¼ã + +æ¤å¤ï¼Eagle æä¾èªå¨è®ç»è°åº¦å¨ï¼å¯æ ¹æ®æä»¶æè UIé ç½®çæ¶é´å¨æåç²åº¦æ¥è°åº¦è¿ä¸ªåºäºSparkç离线è®ç»ç¨åºï¼ç¨äºæ¹éåå»ºç¨æ·Profileåè¡ä¸ºæ¨¡åï¼é»è®¤è¯¥è®ç»ç³»ç»ä»¥æ¯æçé¢çæ´æ°æ¨¡åï¼æ¨¡åç²åº¦ä¸ºä¸åéã + +Eagle å ç½®çæºå¨å¦ä¹ ç®æ³åºæ¬ææ³å¦ä¸ï¼ + +**æ ¸å¯åº¦ä¼°è®¡ç®æ³ (Density Estimation)** +è¯¥ç®æ³çåºæ¬ææ³æ¯æ ¹æ®æ£æµçè®ç»æ ·æ¬æ°æ®é对æ¯ä¸ªç¨æ·è®¡ç®åºå¯¹åºçæ¦çå¯åº¦åå¸å½æ°ãé¦å ï¼æä»¬å¯¹è®ç»æ°æ®éçæ¯ä¸ªç¹å¾å弿 ååï¼æ ååå¯ä»¥ä½¿å¾æææ°æ®é转å为ç¸å尺度ãç¶åï¼å¨æä»¬çéæºå鿦çåå¸ä¼°è®¡ä¸ï¼æä»¬éç¨é«æ¯åå¸å¼å½æ°æ¥è®¡ç®æ¦çå¯åº¦ãå设任æç¹å¾å½¼æ¤ç¸äºç¬ç«ï¼é£ä¹æç»ç髿¯æ¦çå¯åº¦å°±å¯ä»¥éè¿åè§£å个ç¹å¾çæ¦çå¯åº¦è计ç®å¾å°ãå¨çº¿å®æ¶æ£æµé¶æ®µï¼æä»¬å¯ä»¥é¦å 计ç®åºæ¯ä¸ªç¨æ·å®æ¶è¡ä¸ºçæ¦çãå¦æç¨æ·åºç°å½åè¡ä¸ºçå¯è½æ§ä½äºæä¸ªä¸´çå¼ï¼æä»¬è¡¨è¯ä¸ºå¼å¸¸è¦åï¼èè¿ä¸ªä¸´çå¼å®å ¨ç±ç¦»çº¿è®ç»ç¨åºéè¿ç§°ä¸ºâ马修æ¯ç¸å ³ç³»æ°âï¼Mathews Correlation Coefficientï¼çæ¹æ³è®¡ç®èå¾ã + + + +> å±ç¤ºåä¸ç»´åº¦ä¸ç¨æ·è¡ä¸ºç´æ¹å¾ + +**ç¹å¾å¼åè§£ç®æ³ï¼Eigen-Value Decompositionï¼** +è¯¥ç®æ³ä¸ï¼æä»¬è®¤ä¸ºçæç¨æ·Profileç主è¦ç®çæ¯ä¸ºäºä»ä¸åç°æä»·å¼çç¨æ·è¡ä¸ºæ¨¡å¼ã为äºå®ç°è¿ä¸ªç®çï¼æä»¬å¯ä»¥èè对ç¹å¾ä¾æ¬¡è¿è¡ç»åï¼ç¶åè§å¯ä»ä»¬ç¸äºä¹é´æ¯å¦ä½å½±åçã彿°æ®éé常巨大æ¶ï¼æ£å¦é常æä»¬æéå°çåºæ¯ï¼ç±äºæ£å¸¸æ¨¡å¼çæ°éé常ä¹å¤ï¼ä»¥è³äºç¹å¾éçå¼å¸¸ç模å¼å¾å®¹æè¢«å¿½è§ãç±äºæ£å¸¸çè¡ä¸ºæ¨¡å¼é常å¤äºé常ä½ç»´çå空é´å ï¼å æ¤æä»¬ä¹è®¸å¯ä»¥éè¿é使°æ®éçç»´åº¦æ¥æ´å¥½ççè§£ç¨æ·ççæ£çè¡ä¸ºæ¨¡å¼ãè¯¥æ¹æ³åæ ·å¯ä»¥å¯¹äºè®ç»æ°æ®éè¿è¡éåªãæ ¹æ®å¯¹å¤§éç¨æ·ç¹å¾æ°æ®æ¹å·®çè¿è¡è¿ç®ï¼é叏卿们çç¨ä¾åºæ¯ä¸éåæ¹å·®ä¸º95%ä½ä¸ºåºåï¼æä»¬å¯ä»¥å¾å°æ¹å·®ä¸º95%ç主æåçæ°é为kï¼å æ¤æä»¬å°åk个主æå认为æ¯ç¨æ·çæ£å¸¸å空é´ï¼èå©ä¸ç(n-k)个主æåå被è§ä¸ºå¼å¸¸å空é´ã + +å½çº¿å®æ¶å¼å¸¸æ£æµæ¶ï¼å¦æç¨æ·è¡ä¸ºæ¨¡å¼ä½äºæ£å¸¸å空é´éè¿ï¼å认为该è¡ä¸ºæ£å¸¸ï¼å¦åï¼å¦æç¨æ·è¡ä¸ºæ¨¡å¼ä½äºå¼å¸¸å空é´éè¿ï¼åä¼ç«å³æ¥è¦ï¼å 为æä»¬ç¸ä¿¡éå¸¸ç¨æ·è¡ä¸ºä¸è¬åºè¯¥ä½äºæ£å¸¸å空é´å ãè³äºå¦ä½è®¡ç®ç¨æ·å½åè¡ä¸ºæ¥è¿æ£å¸¸è¿æ¯å¼å¸¸å空é´ï¼æä»¬éç¨çæ¯æ¬§æ°è·ç¦»æ³ï¼Euclidian distance methodï¼ã + + + +> å±ç¤ºéè¦çç¨æ·è¡ä¸ºæ¨¡å¼æå + +**Eagle æå¡** + +**çç¥ç®¡çå¨** Eagleçç¥ç®¡ç卿ä¾äº¤äºå好çç¨æ·çé¢åREST API ä¾ç¨æ·è½»æ¾å°å®ä¹å管ççç¥ï¼ä¸ååªéå æ¬¡é¼ æ ç¹å»èå·²ãEagleçç¨æ·çé¢ä½¿å¾çç¥ç管çãææå æ°æ®çæ è¯åå¯¼å ¥ãHDFSæHive çèµæºæµè§ä»¥åé¢è¦ä»ªè¡¨çåè½é½é常æäºä½¿ç¨ã + +Eagle çç¥å¼æé»è®¤æ¯æWSO2çSiddhi CEPå¼æåæºå¨å¦ä¹ 弿ï¼ä»¥ä¸æ¯å 个åºäºSiddi CEPççç¥ç¤ºä¾ + +* åä¸äºä»¶æ§è¡çç¥ï¼ç¨æ·è®¿é®Hiveä¸çæææ°æ®åï¼ + + from hiveAccessLogStream[sensitivityType=='PHONE_NUMBER'] select * insert into outputStream; + +* åºäºçªå£ççç¥ï¼ç¨æ·å¨10åéå 访é®ç®å½ /tmp/private å¤ä½ 5æ¬¡ï¼ + + hdfsAuditLogEventStream[(src == '/tmp/private')]#window.externalTime(timestamp,10 min) select user, count(timestamp) as aggValue group by user having aggValue >= 5 insert into outputStream; + +**æ¥è¯¢æå¡ï¼Query Serviceï¼** Eagle æä¾ç±»SQLçREST APIç¨æ¥å®ç°éå¯¹æµ·éæ°æ®éç综å计ç®ãæ¥è¯¢ååæçè½åï¼æ¯æä¾å¦è¿æ»¤ãèåãç´æ¹è¿ç®ãæåºãtopãç®æ¯è¡¨è¾¾å¼ä»¥åå页çãEagleä¼å æ¯æHBase ä½ä¸ºå ¶é»è®¤æ°æ®åå¨ï¼ä½æ¯åæ¶ä¹æ¯æåºJDBCçå ³ç³»åæ°æ®åºãç¹å«æ¯å½éæ©ä»¥HBaseä½ä¸ºå卿¶ï¼Eagle便åçæ¥æäºHBaseåå¨åæ¥è¯¢æµ·éçæ§æ°æ®çè½åï¼Eagle æ¥è¯¢æ¡æ¶ä¼å°ç¨æ·æä¾çç±»SQLæ¥è¯¢è¯æ³æç»ç¼è¯æä¸ºHBase åççFilter 对象ï¼å¹¶æ¯æéè¿HBase Coprocessorè¿ä¸æ¥æåååºé度ã + + query=AlertDefinitionService[@dataSource="hiveQueryLog"]{@policyDef}&pageSize=100000 + +## Eagleå¨eBayç使ç¨åºæ¯ +ç®åï¼Eagleçæ°æ®è¡ä¸ºçæ§ç³»ç»å·²ç»é¨ç½²å°ä¸ä¸ªæ¥æ2500å¤ä¸ªèç¹çHadoopé群ä¹ä¸ï¼ç¨ä»¥ä¿æ¤æ°ç¾PBæ°æ®çå®å ¨ï¼å¹¶æ£è®¡åäºä»å¹´å¹´åºä¹åæ©å±å°å ¶ä»ä¸å个Hadoopé群ä¸ï¼ä»èè¦çeBay ææä¸»è¦Hadoopç10000å¤å°èç¹ã卿们çç产ç¯å¢ä¸ï¼æä»¬å·²é对HDFSãHive çé群ä¸çæ°æ®é ç½®äºä¸äºåºç¡çå®å ¨çç¥ï¼å¹¶å°äºå¹´åºä¹å䏿å¼å ¥æ´å¤ççç¥ï¼ä»¥ç¡®ä¿éè¦æ°æ®çç»å¯¹å®å ¨ãç®åï¼Eagleççç¥æ¶µçå¤ç§æ¨¡å¼ï¼å æ¬ä»è®¿é®æ¨¡å¼ãé¢ç¹è®¿é®æ°æ®éï¼é¢å®ä¹æ¥è¯¢ç±»åãHive 表ååãHBase 表以ååºäºæºå¨å¦ä¹ 模åçæçç¨æ·Profileç¸å ³çææçç¥çãåæ¶ï¼æä»¬ä¹æå¹¿æ³ççç¥æ¥é²æ¢æ°æ®çä¸¢å¤±ãæ°æ®è¢«æ·è´å°ä¸å®å ¨å°ç¹ãæææ°æ®è¢«æªææåºå访é®çãEagleçç¥å®ä¹ä¸æå¤§ççµæ´»æ§åæ©å±æ§ä½¿å¾æä»¬æªæ¥å¯ä»¥è½»æå°ç»§ç»æ©å±æ´å¤æ´å¤æççç¥ä»¥æ¯ææ´å¤å¤å åçç¨ ä¾åºæ¯ã + +## åç»è®¡å +è¿å»ä¸¤å¹´ä¸ï¼å¨eBay é¤äºè¢«ç¨äºæ°æ®è¡ä¸ºçæ§ä»¥å¤ï¼Eagle æ ¸å¿æ¡æ¶è¿è¢«å¹¿æ³ç¨äºçæ§èç¹å¥åº·ç¶åµãHadoopåºç¨æ§è½ææ ãHadoop æ ¸å¿æå¡ä»¥åæ´ä¸ªHadoopé群çå¥åº·ç¶åµç诸å¤é¢åãæä»¬è¿å»ºç«ä¸ç³»åçèªå¨åæºå¶ï¼ä¾å¦èç¹ä¿®å¤çï¼å¸®å©æä»¬å¹³å°é¨é¨æå¤§å¾èçäºæä»¬äººå·¥å³åï¼å¹¶ææå°æåäºæ´ä¸ªéç¾¤èµæºå°å©ç¨çã + +以䏿¯æä»¬ç®åæ£å¨å¼åä¸å°ä¸äºç¹æ§ï¼ + +* æ©å±æºå¨å¦ä¹ 模å对HiveåHBaseæ¯æ +* æä¾é«åº¦å¯æ©å±çAPIï¼ä»¥æ¹ä¾¿éç®åä¸ç广æ³ä½¿ç¨çå ¶ä»çæ§é¢è¦å¹³å°æè å·¥å ·ï¼å¦GangliaåNagiosçï¼åæ¶æ¯ææææ°æ®çå¯¼å ¥ï¼å¦ä¸Dataguise éæçã +* æ¤å¤ï¼æä»¬æ£å¨ç§¯ææ´çå ¶ä»Hadoop éç¾¤çæ§æ¨¡åï¼ææå¨åç»åå¸ä¸å¼æºç»ç¤¾åºï¼ä¾å¦ + * HBase çæ§ + * Hadoop ä½ä¸æ§è½çæ§ + * Hadoop èç¹çæ§ + +## å ³äºä½è +[éæµ©](https://github.com/haoch)ï¼Apache Eagle Committer å PMC æåï¼eBay åæå¹³å°åºç¡æ¶æé¨é¨é«çº§è½¯ä»¶å·¥ç¨å¸ï¼è´è´£Eagleç产åè®¾è®¡ãææ¯æ¶æãæ ¸å¿å®ç°ä»¥å弿ºç¤¾åºæ¨å¹¿çã + +æè°¢ä»¥ä¸æ¥èªApache Eagle社åºåeBayå ¬å¸çèåä½è ä»¬å¯¹æ¬æçè´¡ç®ï¼ + +* [å¼ å](https://github.com/yonzhang)ï¼Apache Eagle CommitteråPMCï¼eBay èµæ·±æ¶æå¸ +* [åç«æ](https://github.com/sunlibin)ï¼Apache Eagle CommitteråPMCï¼eBay 软件工ç¨å¸ +* [èåéº](https://github.com/zombiej)ï¼Apache Eagle CommitteråPMCï¼eBay 软件工ç¨å¸ +* [èµµæ´é¯](https://github.com/qingwen220)ï¼Apache Eagle CommitteråPMCï¼eBay 软件工ç¨å¸ + +eBay åæå¹³å°åºç¡æ¶æé¨ï¼Analytics Data Infrastructureï¼æ¯eBayçå ¨çæ°æ®ååæåºç¡æ¶æé¨é¨ï¼è´è´£eBay卿°æ®åºãæ°æ®ä»åºãHadoopãå塿ºè½ä»¥åæºå¨å¦ä¹ çåä¸ªæ°æ®å¹³å°å¼åã管çç,æ¯æeBayå ¨çåé¨é¨è¿ç¨é«ç«¯çæ°æ®åæè§£å³æ¹æ¡ä½åºåæ¶ææçä½ä¸å³çï¼ä¸ºéå¸å ¨ççä¸å¡ç¨æ·æä¾æ°æ®åæè§£å³æ¹æ¡ã + +## åèèµæ + +* Apache Eagle ææ¡£ï¼[http://goeagle.io](http://goeagle.io) +* Apache Eagle æºç ï¼[http://github.com/apache/incubator-eagle](http://github.com/apache/incubator-eagle) +* Apache Eagle 项ç®ï¼[http://incubator.apache.org/projects/eagle.html](http://incubator.apache.org/projects/eagle.html) + +## å¼ç¨é¾æ¥ +* **CSDN**: [http://www.csdn.net/article/2015-10-29/2826076](http://www.csdn.net/article/2015-10-29/2826076) +* **OSCHINA**: [http://www.oschina.net/news/67515/apache-eagle](http://www.oschina.net/news/67515/apache-eagle) +* **China Hadoop Summit**: [http://mp.weixin.qq.com/s?...](http://mp.weixin.qq.com/s?__biz=MzA4MTkyODIzMA==&mid=400298495&idx=1&sn=954031ba8065481c31a3464e2c8a26a5&scene=1&srcid=1102zgGQzedckCmNrfRwounA&uin=MjYyNzgwNDQwMA%3D%3D&key=04dce534b3b035efe14d53fcf6e7062a63179003551e59fad5cf8584703fcaa38779cc4c93cbf931c25f6b34cb2d7653&devicetype=iMac+MacBookPro11%2C3+OSX+OSX+10.10.5+build(14F1021)&version=11020201&lang=en&pass_ticket=TC%2Bod2ZeFnhmci%2Bi4%2BxTTVD6moUrNFX8RXppzoQSa%2BXO3C7evUDs6njeYbsYyCFD) +* **Apache Kylin**: [http://mp.weixin.qq.com/s?...](http://mp.weixin.qq.com/s?__biz=MzAwODE3ODU5MA==&mid=400287781&idx=1&sn=343b2b29a37f8ed53a7ecb0465faf515&scene=0&uin=MjYyNzgwNDQwMA%3D%3D&key=04dce534b3b035ef73f964362ac4c43d452ab1b208eb357c488dfcd7d69209e060cfe01e9b146752517d2096f6751370&devicetype=iMac+MacBookPro11%2C3+OSX+OSX+10.10.5+build(14F1021)&version=11020201&lang=en&pass_ticket=TC%2Bod2ZeFnhmci%2Bi4%2BxTTVD6moUrNFX8RXppzoQSa%2BXO3C7evUDs6njeYbsYyCFD) + + +<hr /> + +_æ¬ææ¥èªApache Eagleç½ç«ï¼[http://goeagle.io](http://goeagle.io)ï¼è½¬è½½è¯·æ³¨æåºå¤åæ¥æºã_
http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_sass/_base.scss ---------------------------------------------------------------------- diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..75a96a4 --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,94 @@ +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +%vertical-rhythm { + margin-bottom: $spacing-unit / 4; +} + + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid $grey-color-light; + border-radius: 3px; + background-color: #eef; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: scroll; + + > code { + border: 0; + padding-right: 0; + padding-left: 0; + } +} + +/** + * Clearfix + */ +%clearfix { + + &:after { + content: ""; + display: table; + clear: both; + } +} + + + +/** + * Icons + */ +.icon { + + > svg { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + + path { + fill: $grey-color; + } + } +} + +/** + * Documentations + */ +.docs-sidenav.nav > li { + > a { + display: block; + padding: 4px 20px; + font-size: 18px; + font-weight: 600; + color: #146fd1; + + &:hover { + /*padding-left: 19px;*/ + /*color: #1756a9;*/ + text-decoration: none; + /**background-color: transparent;*/ + } + } + + ul li { + a { + display: block; + padding: 4px 20px; + font-size: 16px; + font-weight: 300; + color: #146fd1; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_sass/_layout.scss ---------------------------------------------------------------------- diff --git a/_sass/_layout.scss b/_sass/_layout.scss new file mode 100644 index 0000000..7e3022d --- /dev/null +++ b/_sass/_layout.scss @@ -0,0 +1,235 @@ +/** + * Site header + */ +.site-header { + border-top: 5px solid $grey-color-dark; + border-bottom: 1px solid $grey-color-light; + min-height: 56px; + + // Positioning context for the mobile navigation icon + position: relative; +} + +.site-title { + font-size: 26px; + line-height: 56px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; + + &, + &:visited { + color: $grey-color-dark; + } +} + +.site-nav { + float: right; + line-height: 56px; + + .menu-icon { + display: none; + } + + .page-link { + color: $text-color; + line-height: $base-line-height; + + // Gaps between nav items, but not on the first one + &:not(:first-child) { + margin-left: 20px; + } + } + + @include media-query($on-palm) { + position: absolute; + top: 9px; + right: 30px; + background-color: $background-color; + border: 1px solid $grey-color-light; + border-radius: 5px; + text-align: right; + + .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + + > svg { + width: 18px; + height: 15px; + + path { + fill: $grey-color-dark; + } + } + } + + .trigger { + clear: both; + display: none; + } + + &:hover .trigger { + display: block; + padding-bottom: 5px; + } + + .page-link { + display: block; + padding: 5px 10px; + } + } +} + + + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid $grey-color-light; + padding: $spacing-unit 0; +} + +.footer-heading { + font-size: 18px; + margin-bottom: $spacing-unit / 2; +} + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; +} + +.footer-col-wrapper { + font-size: 15px; + color: $grey-color; + margin-left: -$spacing-unit / 2; + @extend %clearfix; +} + +.footer-col { + float: left; + margin-bottom: $spacing-unit / 2; + padding-left: $spacing-unit / 2; +} + +.footer-col-1 { + width: -webkit-calc(35% - (#{$spacing-unit} / 2)); + width: calc(35% - (#{$spacing-unit} / 2)); +} + +.footer-col-2 { + width: -webkit-calc(20% - (#{$spacing-unit} / 2)); + width: calc(20% - (#{$spacing-unit} / 2)); +} + +.footer-col-3 { + width: -webkit-calc(45% - (#{$spacing-unit} / 2)); + width: calc(45% - (#{$spacing-unit} / 2)); +} + +@include media-query($on-laptop) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (#{$spacing-unit} / 2)); + width: calc(50% - (#{$spacing-unit} / 2)); + } + + .footer-col-3 { + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + +@include media-query($on-palm) { + .footer-col { + float: none; + width: -webkit-calc(100% - (#{$spacing-unit} / 2)); + width: calc(100% - (#{$spacing-unit} / 2)); + } +} + + +/** + * Page content + */ +.page-content { + padding: $spacing-unit 10px; +} + +.page-heading { + font-size: 20px; +} + +.post-list { + margin-left: 0; + list-style: none; + + > li { + margin-bottom: $spacing-unit; + } +} + +.post-meta { + font-size: $small-font-size; + color: $grey-color; +} + +.post-link { + display: block; + font-size: 24px; +} + + + +/** + * Posts + */ +.post-header { + margin-bottom: $spacing-unit; +} + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; + + @include media-query($on-laptop) { + font-size: 36px; + } +} + +.post-content { + margin-bottom: $spacing-unit; + + h2 { + font-size: 32px; + + @include media-query($on-laptop) { + font-size: 28px; + } + } + + h3 { + font-size: 26px; + + @include media-query($on-laptop) { + font-size: 22px; + } + } + + h4 { + font-size: 20px; + + @include media-query($on-laptop) { + font-size: 18px; + } + } +} http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_sass/_syntax-highlighting.scss ---------------------------------------------------------------------- diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss new file mode 100644 index 0000000..e36627d --- /dev/null +++ b/_sass/_syntax-highlighting.scss @@ -0,0 +1,67 @@ +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; + @extend %vertical-rhythm; + + .c { color: #998; font-style: italic } // Comment + .err { color: #a61717; background-color: #e3d2d2 } // Error + .k { font-weight: bold } // Keyword + .o { font-weight: bold } // Operator + .cm { color: #998; font-style: italic } // Comment.Multiline + .cp { color: #999; font-weight: bold } // Comment.Preproc + .c1 { color: #998; font-style: italic } // Comment.Single + .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special + .gd { color: #000; background-color: #fdd } // Generic.Deleted + .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific + .ge { font-style: italic } // Generic.Emph + .gr { color: #a00 } // Generic.Error + .gh { color: #999 } // Generic.Heading + .gi { color: #000; background-color: #dfd } // Generic.Inserted + .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific + .go { color: #888 } // Generic.Output + .gp { color: #555 } // Generic.Prompt + .gs { font-weight: bold } // Generic.Strong + .gu { color: #aaa } // Generic.Subheading + .gt { color: #a00 } // Generic.Traceback + .kc { font-weight: bold } // Keyword.Constant + .kd { font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #458; font-weight: bold } // Keyword.Type + .m { color: #099 } // Literal.Number + .s { color: #d14 } // Literal.String + .na { color: #008080 } // Name.Attribute + .nb { color: #0086B3 } // Name.Builtin + .nc { color: #458; font-weight: bold } // Name.Class + .no { color: #008080 } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #900; font-weight: bold } // Name.Exception + .nf { color: #900; font-weight: bold } // Name.Function + .nn { color: #555 } // Name.Namespace + .nt { color: #000080 } // Name.Tag + .nv { color: #008080 } // Name.Variable + .ow { font-weight: bold } // Operator.Word + .w { color: #bbb } // Text.Whitespace + .mf { color: #099 } // Literal.Number.Float + .mh { color: #099 } // Literal.Number.Hex + .mi { color: #099 } // Literal.Number.Integer + .mo { color: #099 } // Literal.Number.Oct + .sb { color: #d14 } // Literal.String.Backtick + .sc { color: #d14 } // Literal.String.Char + .sd { color: #d14 } // Literal.String.Doc + .s2 { color: #d14 } // Literal.String.Double + .se { color: #d14 } // Literal.String.Escape + .sh { color: #d14 } // Literal.String.Heredoc + .si { color: #d14 } // Literal.String.Interpol + .sx { color: #d14 } // Literal.String.Other + .sr { color: #009926 } // Literal.String.Regex + .s1 { color: #d14 } // Literal.String.Single + .ss { color: #990073 } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #008080 } // Name.Variable.Class + .vg { color: #008080 } // Name.Variable.Global + .vi { color: #008080 } // Name.Variable.Instance + .il { color: #099 } // Literal.Number.Integer.Long +} http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_site/README.md ---------------------------------------------------------------------- diff --git a/_site/README.md b/_site/README.md new file mode 100644 index 0000000..5fc703c --- /dev/null +++ b/_site/README.md @@ -0,0 +1,49 @@ +# Eagle Documentation Site +Welcome to the Apache Eagle documentation! + +## Prerequisites + +Install [jekyll](https://jekyllrb.com/) gem + + $ gem install jekyll + +Generate the site, and start a server locally: + + $ jekyll serve -w + +The `-w` option tells jekyll to watch for changes to files and regenerate the site automatically when any content changes. + +Point your browser to [http://localhost:4000](http://localhost:4000) + +By default, jekyll will generate the site in a `_site` directory. + +## Editing documentations +1. Create a markdown file and add following content in header + + --- + layout: doc + title: "Eagle Overview" + permalink: /docs/some-new-doc.html + --- + + More content here .. + +2. Register the link in documentations sidebar navigation + + documentations: + - category: "Some category" + links: + - title: Some new doc + url: /docs/some-new-doc.html + +## Publishing the Apache Website +In order to publish the website, you must have committer access to Eagle's subversion repository. + +The Eagle website is published using Apache svnpubsub. Any changes committed to subversion will be automatically published to eagle.apache.org. + +To publish changes, tell jekyll to generate the site in the publish directory of subversion, then commit the changes: + + cd docs + jekyll build -d /path/to/svn/repo/publish + cd /path/to/svn/repo/publish + svn commit http://git-wip-us.apache.org/repos/asf/eagle/blob/d6fed677/_site/about/index.html ---------------------------------------------------------------------- diff --git a/_site/about/index.html b/_site/about/index.html new file mode 100644 index 0000000..4f3121e --- /dev/null +++ b/_site/about/index.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + + <title>Eagle - About</title> + <meta name="description" content="Eagle - Analyze Big Data Platforms for Security and Performance"> + + <meta name="keywords" content="Eagle, Hadoop, Security, Real Time"> + <meta name="author" content="eBay Inc."> + + <meta charset="utf-8"> + <meta name="viewport" content="initial-scale=1"> + + <link rel="stylesheet" href="/css/animate.css"> + <link rel="stylesheet" href="/css/bootstrap.min.css"> + + <link rel="stylesheet" href="/css/font-awesome.min.css"> + + <link rel="stylesheet" href="/css/misc.css"> + <link rel="stylesheet" href="/css/style.css"> + <link rel="stylesheet" href="/css/styles.css"> + <link rel="stylesheet" href="/css/main.css"> + <link rel="alternate" type="application/rss+xml" title="Eagle" href="http://goeagle.io/feed.xml" /> + <link rel="shortcut icon" href="/images/favicon.png"> + + <!-- Baidu Analytics Tracking--> + <script> + var _hmt = _hmt || []; + (function() { + var hm = document.createElement("script"); + hm.src = "//hm.baidu.com/hm.js?fedc55df2ea52777a679192e8f849ece"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); + </script> + + <!-- Google Analytics Tracking --> + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-68929805-1', 'auto'); + ga('send', 'pageview'); + </script> +</head> +<body> +<!-- header start --> +<div id="home_page"> + <div class="topbar"> + <div class="container"> + <div class="row" > + <nav class="navbar navbar-default"> + <div class="container-fluid"> + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> + <a class="navbar-brand" href="/"><img src="/images/logo2.png" height="44px" style="margin-top:-7px"></a> </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <!-- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav navbar-right" id="top-menu"> + <li><a class="menu" href="/#home_page">HOME</a></li> + <li><a class="menu" href="/docs/">DOCS</a></li> + <li><a class="menu" href="/#about_page">ABOUT</a></li> + <li><a class="menu" href="/#diagram_page">ARCHITECTURE</a></li> + <li><a class="menu" href="/#modules_page">MODULES</a></li> + <li><a class="menu" href="/#usecase_page">USE CASES</a></li> + <li> + </li> + </ul> --> + </div> + </div> + <!-- /.container-fluid --> + </nav> + </div> + </div> + </div> + <div class="headerimage"> + <div class="flexslider"> + <ul class="slides"> + <li><img src="/images/slider/4.jpg" alt="Slide 1"></li> + </ul> + </div> + </div> + <div class="particles" style="height:40%"> </div><!---particles--> + <div class="slider-caption" style="top:80px;"> + <div class="homewrapper"> + <div class="hometitle"> + <a href="/"> + <img src="/images/feather.png" height="80px"> + </a> + </div> + <div class="hometext"> + <h2>Analyze Big Data Platforms For Security and Performance</h2> + <div class="social-buttons"> + <a href="https://github.com/apache/eagle"><i class="fa fa-github"></i></a> + <a href="http://twitter.com/TheApacheEagle"><i class="fa fa-twitter"></i></a> + <a href="https://www.facebook.com/TheApacheEagle/"><i class="fa fa-facebook"></i></a> + <a href="#"><i class="fa fa-weixin"></i></a> + <!-- <a href="https://www.weibo.com/ApacheEagle/"><i class="fa fa-weibo"></i></a> --> + </div> + </div> + </div> + </div> +</div> +<!-- header end --> +<p>This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at <a href="http://jekyllrb.com/">jekyllrb.com</a></p> + +<p>You can find the source code for the Jekyll new theme at: <a href="https://github.com/jglovier/jekyll-new">github.com/jglovier/jekyll-new</a></p> + +<p>You can find the source code for Jekyll at <a href="https://github.com/jekyll/jekyll">github.com/jekyll/jekyll</a></p> + + +<!-- footer start --> +<div class="footerwrapper"> + <div class="container"> + <div class="row"> + <div class="col-md-12"><div style="margin-left:auto; margin-right:auto; text-align:center;font-size: 12px"> +<div> +</div> +<div> +<a href="http://www.apache.org"> +<img id="asf-logo" alt="Apache Software Foundation" src="/images/apache-logo-small.gif"> +</a> +</div> +<div> +Copyright © 2015 <a href="http://www.apache.org">The Apache Software Foundation</a>, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. +</div> +<div> +Apache Eagle, Eagle, Apache Hadoop, Hadoop, Apache HBase, HBase, Apache Hive, Hive, Apache Ambari, Ambari, Apache Spark, Spark, Apache Kafka, Kafka, Apache Storm, Storm, Apache Maven, Maven, Apache Tomcat, Tomcat, Apache Derby, Derby, Apache Cassandra, Cassandra, Apache ZooKeeper, ZooKeeper, Apache, the Apache feather logo, and the Apache project logo are trademarks of The Apache Software Foundation. +</div> + </div></div> + </div> + </div> +</div> +<!-- footer end --> + +<!-- JavaScripts --> +<script src="/js/jquery-1.11.1.min.js"></script> +<script src="/js/jquery.singlePageNav.js"></script> +<script src="/js/jquery.flexslider.js"></script> +<script src="/js/modernizr.min.js"></script> +<script src="/js/svg.js"></script> +<script> + /************** FlexSlider *********************/ + $('.flexslider').flexslider({ + animation: "fade", + directionNav: false + }); +</script> + +<script> + /************** FlexSlider *********************/ + $('.flexslider').flexslider({ + animation: "fade", + directionNav: false + }); +</script> +</body> +</html>
