Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎÔÚ·Ö²¼Ê½ÊµÊ±¼ÆËã¿ò¼Ü Storm Öе÷Óà ODM ¹æÔòÔËËã
 
 À´Ô´£ºIBM ·¢²¼ÓÚ£º  2016-8-29
  3528  次浏览      27
 

·Ö²¼Ê½ÊµÊ±¼ÆËã¿ò¼Ü Storm ¼ò½é

Storm ÊÇĿǰÁ÷Ðеķֲ¼Ê½ÊµÊ±Á÷¼ÆËã¿ò¼ÜÖ®Ò»£¬ËüÌṩÁË¿ÉÈÝ´í·Ö²¼Ê½¼ÆËãËùÒªÇóµÄ»ù±¾ÐèÇóºÍ±£ÕÏ»úÖÆ£¬¿ÉÒÔÂú×ã¸ßÍÌÍ , ʵʱµÄ¹Ø¼üÒµÎñÓ¦ÓõÄÐèÇó¡£ÔÚ±àд»ùÓÚ Storm µÄ·Ö²¼Ê½¼ÆËãÓ¦ÓÃʱ£¬ÎÒÃÇÊ×ÏÈÐèÒª´´½¨Ò»¸öÍØÆË£¨Topology£©, ÍØÆËÊÇÒ»¸öÓÉ Spout ½ÚµãºÍ Bolt ½Úµã¹¹³ÉµÄÓÐÏòͼ£¬ÆäÖÐ Spout ½Úµã¸ºÔð²É¼¯Êý¾Ý²¢·¢ÉäÊý¾ÝÁ÷µ½ Storm ¼¯Èº£¬Bolt ½Úµã¸ºÔð´Ó Spout ½Úµã»òÆäËû Bolt ½Úµã½ÓÊÕÊý¾ÝÁ÷£¬²¢½øÐÐÒµÎñ´¦Àí¡£ÔÚ±àд»ùÓÚ Storm µÄ·Ö²¼Ê½Ó¦ÓÃʱ£¬ÎÒÃÇ¿ÉÒÔÔÚ Bolt ½ÚµãÖе÷Óà ODM ¹æÔò¼¯£¬´Ó¶ø½«ÒµÎñ¹æÔòÏà¹ØµÄÂß¼­ºÍÊý¾Ý²É¼¯ÒÔ¼°Êý¾ÝÁ÷µÄ¿ØÖÆ·ÖÀ뿪À´£¬ÔÚÒµÎñ·¢Éú±ä¸üʱ£¬ÎÒÃÇ¿ÉÒÔ¶¯Ì¬µÄÖØÐ²¿ÊðÐµĹæÔò¼¯£¬¶ø²»ÊÇÖØÐ·¢²¼²¢ÔËÐÐÕû¸ö Storm ÍØÆË¡£

ͼ 1. Storm ÍØÆË

ÔÚ±àдºÃ Storm ÍØÆËºó£¬ÎÒÃÇÐèÒª½« Storm Ó¦Óôò°ü³ÉÒ»¸ö Uber Jar( Ò²³ÆÎª Fat Jar, ¼´½«ËùÓеÄÒÀÀµÀà¿â´ò°üµ½Ò»Æð·¢²¼£©£¬²¢Ìá½»µ½ Storm ¼¯ÈºÉÏÔËÐУ¬Storm ¼¯ÈºÓÉ Nimbus ½ÚµãºÍ Supervisor ½Úµã¹¹³É£¬ÆäÖÐ Nimbus ½Úµã¸ºÔð½«Ó¦ÓôúÂ루Uber Jar£©·Ö·¢¸ø Supervisor ½Úµã , Ö¸ÅÉÈÎÎñ£¬²¢¼à¿ØÈÎÎñµÄÖ´ÐС£Supervisor ½Úµã¸ºÔð¼àÌý´Ó Nimbus ½Úµã·ÖÅäÀ´µÄÈÎÎñ£¬Æô¶¯¹¤×÷½ø³ÌÀ´ÔËÐÐÏàÓ¦µÄÈÎÎñ¡£Supervisor ½ÚµãºÍ Nimbus ½Úµãͨ¹ý zookeeper À´½øÐÐͨÐÅ¡£

ͼ 2. Storm ¼¯Èº

ODM ¹æÔò¼¯µ÷Ó÷½Ê½¼ò½é

Rule Execution Server (RES) ÊÇ IBM ODM ²úÆ·ÔÚ·Ö²¼Ê½»·¾³ÖйÜÀíºÍÖ´ÐйæÔò¼¯µÄ×é¼þ¡£RES ¿É×÷Ϊ¼¯ÖÐʽ·þÎñ²¿Ê𣬴ӶøÏìÓ¦¶à¸ö¿Í»§»úµÄÇëÇó²¢Í¬Ê±Ö´Ðжà¸ö¹æÔò¼¯¡£ËüÌṩµÄ¶àÖÖ¹æÔòÖ´ÐÐ×é¼þ£¬ÈÃÓû§¿ÉÒÔÑ¡ÔñºÏÊʵÄÖ´ÐÐģʽ£¬½«ÒµÎñ¹æÔò¹ÜÀíϵͳ¼¯³Éµ½ÆóÒµÓ¦ÓÃÖС£RES »ùÓÚÄ£¿é»¯µÄÌåϵ½á¹¹£¬Ê¹Ëü¼´¿ÉÒÔ×÷Ϊһ×é Java SE POJO ¶ÔÏóÀ´²¿ÊðºÍÔËÐУ¬ÓÖ¿ÉÒÔÔÚÍêÈ«¼æÈÝ Java EE µÄÓ¦ÓóÌÐò·þÎñÆ÷Éϲ¿ÊðºÍÔËÐС£Ëü½«¹æÔòÒýÇæ·âװΪһ¸ö JCA ×ÊÔ´ÊÊÅäÆ÷¡ª¡ªÖ´Ðе¥Ôª (XU) ×ÊÔ´ÊÊÅäÆ÷£¬ÔÚÓ¦ÓóÌÐò·þÎñÆ÷Óë¹æÔòÒýÇæÖ®¼äʵʩ JCA ½»»¥£¬ÓÉ XU ×ÊÔ´ÊÊÅäÆ÷À´¹ÜÀí¹æÔòÒýÇæ£¬¼ÓÔØ¹æÔò¼¯£¬²¢ÔÚÒµÎñÓ¦Óú͹æÔòÒýÇæ¼ä´«µÝÒµÎñ¹æÔòµÄµ÷ÓòÎÊýºÍÖ´Ðнá¹û¡£

ͼ 3. RES ×é¼þ½á¹¹

¸ù¾Ý¹æÔòÖ´Ðе¥Ôª XU µÄ²¿Êð·½Ê½£¬¿ÉÒÔ½«¹æÔòµ÷Ó÷ֳɻùÓÚ J2EE µÄµ÷Ó÷½Ê½ºÍ»ùÓÚ J2SE µÄµ÷Ó÷½Ê½Á½´óÀࣺ

»ùÓÚ J2EE µÄµ÷Ó÷½Ê½ÊÇÖ¸½« XU ×÷Ϊ¶ÀÁ¢µÄ×ÊÔ´ÊÊÅäÆ÷£¬°²×°µ½Ó¦Ó÷þÎñÆ÷ÉÏ£¬ÓÉÓ¦Ó÷þÎñÆ÷È¥¹ÜÀí XU µÄ×ÊÔ´³Ø£¬¿Í»§¶Ë²ÉÓà ODM ²úÆ·ÌṩµÄ J2EE ¹æÔòÖ´ÐÐ×é¼þ£¨jrules-res-session, jrules-res-session-ejb3, jrules-res-session-mdb µÈ£©´´½¨¹æÔò»á»°£¬½øÐйæÔòµÄ±¾µØ»òÔ¶³Ìµ÷Óã¨ÆäÖÐ jrules-res-session ×é¼þ½öÖ§³Ö POJO ¹æÔò»á»°µÄ±¾µØµ÷Óã©¡£

»ùÓÚ J2SE µÄµ÷Ó÷½Ê½ÊÇÖ¸½« XU ×÷ΪÀà¿â´ò°üµ½±¾µØÓ¦ÓÃÖУ¬ÓÉÒµÎñÓ¦ÓÃ×Ô¼º¹ÜÀí XU µÄ´´½¨ºÍ×ÊÔ´³Ø , ²¢´´½¨ J2SE ¹æÔò»á»°£¬µ÷ÓùæÔò¼¯¡£

³ýÁË»ùÓÚ J2EE ºÍ J2SE µÄÁ½ÖÖµ÷Ó÷½Ê½Í⣬ODM RES »¹ÌṩÁËÒ»¸ö¹æÔò¾ö²ß·þÎñ (Decision Service) Ó¦Óã¬Óû§¿ÉÒÔͨ¹ý Decision Service Óà SOAP ·½Ê½»ò REST ·½Ê½µ÷ÓùæÔò¼¯¡£

ÔÚ Storm Öе÷ÓùæÔò¼¯Ê±£¬¿Í»§¶Ë´úÂëÔËÐÐÔÚ Storm µÄ¹¤×÷½Úµã JVM ÖУ¬Òò´ËÄÜÑ¡ÔñµÄ¹æÔòµ÷Ó÷½Ê½ÓУº

»ùÓÚ J2EE µÄ EJB Ô¶³Ìµ÷ÓÃ

MDB Òì²½ÏûÏ¢¹æÔòµ÷ÓÃ

Decision Service µ÷ÓÃ

»ùÓÚ J2SE µÄ¹æÔòµ÷ÓÃ

ǰÈýÖÖ·½Ê½ÒªÇ󽫹æÔòÖ´Ðе¥Ôª XU °²×°µ½¶ÀÁ¢µÄÓ¦Ó÷þÎñÆ÷ÉÏ£¬µ±¹æÔòÖ´ÐгÉΪ Storm ʵʱ¼ÆËãµÄÆ¿¾±Ê±£¬ÎÒÃÇÖ»ÄÜ´¹Ö±»òˮƽµÄÀ©Õ¹ÔËÐÐ ODM RES µÄÓ¦Ó÷þÎñÆ÷£¬²¢ÇÒÎÞÂÛÊÇ EJB Ô¶³Ìµ÷Óã¬MDB Òì²½ÏûÏ¢µ÷Óû¹ÊÇ Decision Service µ÷Ó㬶¼ÐèÒª·ÃÎÊλÓÚÍâ²¿ÍøÂçµÄÓ¦Ó÷þÎñÆ÷£¬ÍøÂçÑÓʱ¿ÉÄÜ»áÓ°Ïì Storm ʵʱ´¦ÀíµÄÄÜÁ¦¡£

ÔÚ Storm ÖÐʹÓà J2SE ¹æÔò»á»°µ÷ÓùæÔò¼¯

ÔÚ Storm Öе÷ÓùæÔò¼¯µÄÒ»¸ö±È½ÏºÃµÄ·½Ê½ÊÇʹÓûùÓÚ J2SE µÄ¹æÔò»á»°£¬²ÉÓÃÕâÖÖµ÷Ó÷½Ê½£¬Ã¿¸ö Storm Executor »á³õʼ»¯×Ô¼ºµÄ XU ʵÀý£¬½øÐйæÔòÔËËã¡£¹æÔòÔËËãÒ²³ÉΪÁË Storm ÍØÆËµÄÒ»²¿·Ö£¬¶ø²»ÊÇÒÀÀµÔËÐÐÓÚÍâ²¿ÍøÂçµÄ RES ·þÎñÆ÷¼¯Èº¡£½ÓÏÂÀ´ÎÒÃǽ«Í¨¹ý ODM Getting Started µÄ miniloan sample ΪÀý£¬ÑÝʾһÏÂÈçºÎÔÚ Storm ÖÐÓà J2SE ¹æÔò»á»°µÄ·½Ê½µ÷ÓõĹæÔò¼¯¡£

´´½¨Ò»¸ö Storm Java ÏîÄ¿£¬²¢½« ODM °²×°Ä¿Â¼ executionserver\lib ÖеÄÏÂÁÐ jar ¼ÓÈëµ½ÏîÄ¿µÄ classpath ÖÐ :

¹æÔòÒýÇæÏà¹Ø : asm-*.jar£¬bcel-*.jar£¬jdom-*.jar£¬dom4j-*.jar£¬log4j-*.jar, openxml4j-*.jar, jrules-engine.jar

RES Ïà¹Ø£ºj2ee_connector-*.jar£¬slf4j*.jar £¬mina*.jar£¬jrules-res-execution.jar

½« ODM °²×°Ä¿Â¼ executionserver\bin ÖÐµÄ XU ÅäÖÃÎļþ ra.xml Ìí¼Óµ½ÏîÄ¿µÄÔ´´úÂë·¾¶ÖУ¬²¢¶ÔÏîÄ¿ÖÐµÄ ra.xml ×öÈç϶¨ÖÆ»¯£º

½« XU µÄ traceLevel Éè³É WARNING

ÉèÖà XU persistenceType ºÍ persistenceProperties ÊôÐÔ£¬ÔÚÉú²ú»·¾³ÖУ¬ÎÒÃÇÍÆ¼ö persistenceType ÉèΪ jdbc, ²¢¸ù¾Ý¹æÔòÊý¾Ý¿âÐÅÏ¢£¬ÉèÖà persistenceProperties ÊôÐÔ£¬È磺

<config-property-value> 
DRIVER_CLASS_NAME=com.ibm.db2.jcc.DB2Driver,
URL=jdbc:db2://dbHost:50000/ODMDB,
USER=dbUser,
PASSWORD=dbPassword,
XOM_PERSISTENCE_TYPE=jdbc,
XOM_PERSISTENCE_DRIVER_CLASS_NAME=com.ibm.db2.jcc.DB2Driver,
XOM_PERSISTENCE_URL=jdbc:db2://dbHost:50000/ODMDB,
XOM_PERSISTENCE_USER= dbUser,
XOM_PERSISTENCE_PASSWORD= dbPassword
</config-property-value>

ÉèÖà XU µÄ plugins ÊôÐÔ£¬Ö§³Ö¹æÔò¼¯ÈȲ¿Êð£¬ÔÚ J2SE µÄµ÷Ó÷½Ê½ÖУ¬¹æÔò¼¯µÄÈȲ¿Êð֪ͨ·½Ê½Îª TCP/IP, ³ýÁËÔÚÕâÀï×÷ÈçÏÂÉèÖÃÍ⣺

<config-property-value>

{pluginClass=Management,xuName=default,protocol=tcpip,tcpip.port=1883,tcpip.host=<RES_Console_Host>,tcpip.retryInterval=20}

</config-property-value>

»¹ÐèÒªÖ¸¶¨ RES ¿ØÖÆÌ¨µÄ¹ÜÀíЭÒéΪ TCP/IP, ²¢ÖØÐ²¿Êð RES ¿ØÖÆÌ¨Ó¦Ó㬾ßÌåÅäÖÃÏêÇé²Î¼û Configuring the Rule Execution Server EAR for TCP/IP management

±àд¹æÔòÊý¾ÝÁ÷Éú²úÕß Spout, ͨ³£ÊÇ´ÓÏûÏ¢¶ÓÁÐÖжÁÈ¡ÏûÏ¢£¬²¢½«½á¹û×÷ΪÊý¾ÝÁ÷·¢Éä³öÈ¥£¬ÎªÁ˱ãÓÚÑÝʾ£¬ÎÒÃǽ«Ö±½ÓËæ»ú²úÉúÊý¾ÝÁ÷£¬×÷Ϊ¹æÔòÖ´ÐÐ Bolt µÄÊäÈë¡£

Çåµ¥ 1. RulesSpout.java

public class RulesSpout extends BaseRichSpout {

SpoutOutputCollector _collector;

@Override
public void open(Map conf, TopologyContext context,
SpoutOutputCollector collector) {
_collector = collector;

}

@Override
public void nextTuple() {
Random ran = new Random();
Borrower borrower = new Borrower("John", ran.nextInt(2000),
ran.nextInt(100000));
Loan loan = new Loan(ran.nextInt(1000000), 12, 0.05);
_collector.emit(new Values(borrower, loan));
}

@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("borrower", "loan"));
}

}

±àд¹æÔòÖ´ÐÐ Bolt£¬ÔÚ prepare ·½·¨Öгõʼ»¯ J2SE Session Factory ºÍ J2SE ¹æÔò»á»°¶ÔÏó£¬ÔÚ execute ·½·¨ÖÐÈ¥µ÷ÓÃÕâÁ½¸ö¶ÔÏóµÄ·½·¨£¬Ö´ÐйæÔòÔËË㣬prepare ·½·¨ÔÚ Bolt Ö´ÐÐʱֻ»á±»µ÷ÓÃÒ»´Î£¬Òò´Ë J2SE Session Factory ºÍ J2SE ¹æÔò»á»°¶ÔÏóÖ»»á±»´´½¨Ò»´Î£¬ÔÚÒÔºóµÄÿ´ÎµÄ¹æÔò¼ÆËãʱ (execute ·½·¨ ) ¶¼½«ÖØÓÃÕâÁ½¸ö¶ÔÏó£¬ÎªÁ˱ãÓÚÑÝʾ£¬¹æÔòÔËËã½á¹û½«Ö±½Ó´òÓ¡³öÀ´£¬¶ø²»ÊÇ×÷ΪÊý¾ÝÁ÷ÖØÐ·¢Éä³öÈ¥¡£

Çåµ¥ 2. RulesExecutionBolt.java

public class RulesExecutionBolt extends BaseRichBolt {

private IlrJ2SESessionFactory factory;
private IlrStatelessSession session;

@Override
public void prepare(Map conf, TopologyContext context,
OutputCollector collector) {
try {
factory = new IlrJ2SESessionFactory();
session = factory.createStatelessSession();
} catch (IlrSessionCreationException e) {
e.printStackTrace();
}

}

@Override
public void execute(Tuple tuple) {
Borrower borrower = (Borrower) tuple.getValueByField("borrower");
Loan loan = (Loan) tuple.getValueByField("loan");
Map<String,Object> rulesetParams = new HashMap<String, Object>();
rulesetParams.put("borrower", borrower);
rulesetParams.put("loan", loan);
Map<String,Object> result = executeRules(rulesetParams,
"/miniloanruleapp/miniloanrules");
System.out.println(((Loan)result.get("loan")).getApprovalStatus());

}

private Map<String,Object> executeRules(Map<String,Object>
rulesetParams, String rulesetPath) {
try {
IlrSessionRequest sessionRequest = factory.createRequest();
sessionRequest.setRulesetPath(IlrPath.parsePath(rulesetPath));
sessionRequest.setForceUptodate(true);
sessionRequest.setInputParameters(rulesetParams);

IlrSessionResponse sessionResponse = session.execute(sessionRequest);
return sessionResponse.getOutputParameters();

} catch (IlrSessionException rse) {
rse.printStackTrace();
} catch (IlrFormatException rse) {
rse.printStackTrace();
}
return null;
}

@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {

}

}

±àд Storm ÍØÆË£¬½«Êý¾ÝÁ÷µÄ²É¼¯ºÍ¹æÔòÔËËãÕûºÏÆðÀ´£¬ÔÚÔËÐÐʱÎÒÃÇ¿ÉÒÔ¸ù¾Ýʵ¼ÊÇé¿ö¾ö¶¨Êý¾Ý²É¼¯½ÚµãºÍ¹æÔòÔËËã½ÚµãµÄÊýÁ¿£¬ÒÔ¼°¹¤×÷½ø³ÌµÄÊýÁ¿£¬±È½ÏºÃµÄ×ö·¨ÊÇ£º¹¤×÷½ø³ÌµÄÊýÁ¿ = ¹æÔòÔËËã½ÚµãÊýÁ¿ = Êý¾Ý²É¼¯½ÚµãÊýÁ¿ *N£¬ÕâÑù Storm ÔÚ·ÖÅäÈÎÎñʱ»á±£Ö¤Ã¿¸ö¹¤×÷½ÚµãÉÏÖÁÉÙÔËÐÐÒ»¸ö¹æÔòÔËËã½ÚµãºÍ N ¸öÊý¾Ý²É¼¯½Úµã£¬Êý¾Ý²É¼¯½Úµã Spout ·¢ÉäµÄÊý¾Ý»áÓÅÏÈ·¢É䵽ͬһ¹¤×÷½ÚµãÉϵĹæÔòÔËËã½ÚµãÉÏ£¬´Ó¶øÓÐЧµØ½µµÍÕû¸ö Storm ÍØÆËµÄÍøÂ翪Ïú¡£

Çåµ¥ 3. RulesTopology.java

public class RulesTopology {

public static void main(String[] args) throws Exception {
TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("ruleInput", new RulesSpout(), Integer.parseInt(args[0]));
builder.setBolt("ruleExectuion", new RulesExecutionBolt(),
Integer.parseInt(args[1])).localOrShuffleGrouping("ruleInput");

Config conf = new Config();
conf.setNumWorkers(Integer.parseInt(args[2]));

if (args.length > 3) {
StormSubmitter.submitTopology(args[3], conf, builder.createTopology());
}
else {
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("test-minloan", conf, builder.createTopology());

}

}
}

½« Storm ÏîÄ¿´ò°ü³É Uber Jar£¨minloan-toplogy.jar£©£¬²¢ÓÃÈçϵÄÃüÁîÌá½»´ò°üºÃµÄÍØÆËµ½ Storm ¼¯ÈºÉÏ£º

storm jar minloan-toplogy.jar storm. RulesTopology 8 4 4 MiniloanTopology

ÔÚÌá½»³É¹¦ºó£¬ÎÒÃÇ¿ÉÒÔͨ¹ý Storm UI ¿´µ½ÔËÐÐÖÐµÄ MiniloanTopology ÍØÆËÒÔ¼°Ã¿¸ö½Úµã´¦ÀíµÄÍÌÍÂÁ¿¡£ÔÚ±¾ÀýÖУ¬ÎÒÃǽ«ÍØÆËÌá½»µ½ 4 ¸ö¹¤×÷½ÚµãÉÏ£¬Ã¿¸ö¹¤×÷½ÚµãÉÏ»áÔËÐÐÁ½¸öÊý¾Ý²É¼¯½ÚµãºÍÒ»¸ö¹æÔòÔËËã½Úµã£¬4 ¸ö¹æÔòÔËËã½Úµã´Óͬһ¸ö¹æÔòÊý¾Ý¿â¼ÓÔØ¹æÔò¼¯¡£ÔÚÒµÎñÂß¼­·¢Éú±ä¸üºó£¬ÒµÎñÈËÔ±¿ÉÒÔÖ±½ÓÔÚ Decision Center ÉÏÐÞ¸ÄÒµÎñ¹æÔò£¬È»ºó²¿ÊðÐµĹæÔò¼¯µ½ RES ¿ØÖÆÌ¨£¬RES ¿ØÖÆÌ¨»á֪ͨÿ¸ö Storm ¹¤×÷½ÚµãÖØÐ¼ÓÔØ×îÐµĹæÔò¼¯£¬¶ø²»ÐèÒªÖØÐ²¿ÊðÕû¸ö Storm ÍØÆË¡£

ͼ 4. ODM Rule Execution in Storm

С½á

Storm ÌṩÁËÒ»¸ö¼òµ¥µÄ±à³ÌÄ£ÐÍ£¬ÈÃÎÒÃÇÄܹ»¿ìËٵĿª·¢ÊµÊ±µÄ·Ö²¼Ê½Ó¦Ó㬽« Storm ºÍ ODM ½áºÏÆðÀ´£¬ÎÒÃÇ¿ÉÒÔ·½±ãµÄʹÓà Storm ÌṩµÄÊý¾Ý²É¼¯¿ò¼Ü£¬´Ó Kafak µÈ¿ªÔ´ÏûÏ¢¶ÓÁÐÖвɼ¯Êý¾Ý£¬È»ºó²ÉÓà J2SE µÄ·½Ê½µ÷Óà ODM ¹æÔò¼¯£¬ÕâÑù¿ÉÒԺܺõÄÖ§³Ö´óÅúÁ¿ÊµÊ±µÄ¹æÔòµ÷ÓÃÐèÇ󣬲¢Äܸù¾ÝÒµÎñÐèÇ󣬶¯Ì¬µÄÀ©Õ¹¹æÔò¼ÆËã½ÚµãµÄÊýÁ¿¡£

   
3528 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

APPÍÆ¹ãÖ®ÇÉÓù¤¾ß½øÐÐÊý¾Ý·ÖÎö
Hadoop Hive»ù´¡sqlÓï·¨
Ó¦Óö༶»º´æÄ£Ê½Ö§³Åº£Á¿¶Á·þÎñ
HBase ³¬Ïêϸ½éÉÜ
HBase¼¼ÊõÏêϸ½éÉÜ
Spark¶¯Ì¬×ÊÔ´·ÖÅä

HadoopÓëSpark´óÊý¾Ý¼Ü¹¹
HadoopÔ­ÀíÓë¸ß¼¶Êµ¼ù
HadoopÔ­Àí¡¢Ó¦ÓÃÓëÓÅ»¯
´óÊý¾ÝÌåϵ¿ò¼ÜÓëÓ¦ÓÃ
´óÊý¾ÝµÄ¼¼ÊõÓëʵ¼ù
Spark´óÊý¾Ý´¦Àí¼¼Êõ

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí