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

熱線電話:13121318867

登錄
首頁精彩閱讀如何挑選合適的大數(shù)據(jù)或Hadoop平臺_數(shù)據(jù)分析師
如何挑選合適的大數(shù)據(jù)或Hadoop平臺_數(shù)據(jù)分析師
2015-01-13
收藏

如何挑選合適的大數(shù)據(jù)或Hadoop平臺_數(shù)據(jù)分析師


今年,大數(shù)據(jù)在很多公司都成為相關(guān)話題。雖然沒有一個(gè)標(biāo)準(zhǔn)的定義來解釋何為 “大數(shù)據(jù)”,但在處理大數(shù)據(jù)上,Hadoop已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)。IBM、Oracle、SAP、甚至Microsoft等幾乎所有的大型軟件提供商都采用了Hadoop。然而,當(dāng)你已經(jīng)決定要使用Hadoop來處理大數(shù)據(jù)時(shí),首先碰到的問題就是如何開始以及選擇哪一種產(chǎn)品。你有多種選擇來安裝Hadoop的一個(gè)版本并實(shí)現(xiàn)大數(shù)據(jù)處理。本文討論了不同的選擇,并推薦了每種選擇的適用場合。

Hadoop平臺的多種選擇

下圖展示了Hadoop平臺的多種選擇。你可以只安裝Apache 發(fā)布版本,或從不同提供商所提供的幾個(gè)發(fā)行版本中選擇一個(gè),或決定使用某個(gè)大數(shù)據(jù)套件。每個(gè)發(fā)行版本都包含有Apache Hadoop,而幾乎每個(gè)大數(shù)據(jù)套件都包含或使用了一個(gè)發(fā)行版本,理解這一點(diǎn)是很重要的。

下面我們首先從Apache Hadoop開始來好好看看每種選擇。

Apache Hadoop

Apache Hadoop項(xiàng)目的目前版本(2.0版)含有以下模塊:

  • Hadoop通用模塊:支持其他Hadoop模塊的通用工具集。
  • Hadoop分布式文件系統(tǒng)(HDFS:支持對應(yīng)用數(shù)據(jù)高吞吐量訪問的分布式文件系統(tǒng)。
  • Hadoop YARN:用于作業(yè)調(diào)度和集群資源管理的框架。
  • Hadoop MapReduce:基于YARN的大數(shù)據(jù)并行處理系統(tǒng)。

在本地系統(tǒng)上獨(dú)立安裝Apache Hadoop是非常容易的(只需解壓縮并設(shè)置某些環(huán)境變量,然后就可以開始使用了)。但是這只合適于入門和做一些基本的教程學(xué)習(xí)。

如果你想在一個(gè)或多個(gè)“真正的節(jié)點(diǎn)”上安裝Apache Hadoop,那就復(fù)雜多了。

問題1:復(fù)雜的集群設(shè)置

你可以使用偽分布式模式在單個(gè)節(jié)點(diǎn)上模擬多節(jié)點(diǎn)的安裝。你可以在單臺服務(wù)器上模擬在多臺不同服務(wù)器上的安裝。就算是在該模式下,你也要做大量的配置工作。如果你想設(shè)置一個(gè)由幾個(gè)節(jié)點(diǎn)組成的集群,毫無疑問,該過程就變得更為復(fù)雜了。要是你是一個(gè)新手管理員,那么你就不得不在用戶權(quán)限、訪問權(quán)限等諸如此類的問題中痛苦掙扎。

問題2: Hadoop生態(tài)系統(tǒng)的使用

在Apache中,所有項(xiàng)目之間都是相互獨(dú)立的。這是很好的一點(diǎn)!不過Hadoop生態(tài)系統(tǒng)除了包含Hadoop外,還包含了很多其他Apache項(xiàng)目:

  • Pig:分析大數(shù)據(jù)集的一個(gè)平臺,該平臺由一種表達(dá)數(shù)據(jù)分析程序的高級語言和對這些程序進(jìn)行評估的基礎(chǔ)設(shè)施一起組成。
  • Hive:用于Hadoop的一個(gè)數(shù)據(jù)倉庫系統(tǒng),它提供了類似于SQL的查詢語言,通過使用該語言,可以方便地進(jìn)行數(shù)據(jù)匯總,特定查詢以及分析存放在Hadoop兼容文件系統(tǒng)中的大數(shù)據(jù)。
  • Hbase:一種分布的、可伸縮的、大數(shù)據(jù)儲存庫,支持隨機(jī)、實(shí)時(shí)讀/寫訪問。
  • Sqoop:為高效傳輸批量數(shù)據(jù)而設(shè)計(jì)的一種工具,其用于Apache Hadoop和結(jié)構(gòu)化數(shù)據(jù)儲存庫如關(guān)系數(shù)據(jù)庫之間的數(shù)據(jù)傳輸。
  • Flume:一種分布式的、可靠的、可用的服務(wù),其用于高效地搜集、匯總、移動(dòng)大量日志數(shù)據(jù)。
  • ZooKeeper:一種集中服務(wù),其用于維護(hù)配置信息,命名,提供分布式同步,以及提供分組服務(wù)。

還有其他一些項(xiàng)目。

你需要安裝這些項(xiàng)目,并手動(dòng)地將它們集成到Hadoop中。

你需要自己留意不同的版本和發(fā)布版本。不幸的是,不是所有的版本都能在一起完美地運(yùn)行起來。你要自己比較發(fā)布說明并找出解決之道。Hadoop提供了眾多的不同版本、分支、特性等等。跟你從其他項(xiàng)目了解的1.0、1.1、2.0這些版本號不同,Hadoop的版本可遠(yuǎn)沒這么簡單。如果你想更進(jìn)一步了解關(guān)于“Hadoop版本地獄”的細(xì)節(jié),請閱讀“大象的家譜(Genealogy of elephants)”一文。

問題3:商業(yè)支持

Apache Hadoop只是一個(gè)開源項(xiàng)目。這當(dāng)然有很多益處。你可以訪問和更改源碼。實(shí)際上有些公司使用并擴(kuò)展了基礎(chǔ)代碼,還添加了新的特性。很多討論、文章、博客和郵件列表中都提供了大量信息。

然而,真正的問題是如何獲取像Apache Hadoop這樣的開源項(xiàng)目的商業(yè)支持。公司通常只是為自己的產(chǎn)品提供支持,而不會(huì)為開源項(xiàng)目提供支持(不光是Hadoop項(xiàng)目,所有開源項(xiàng)目都面臨這樣的問題)。

何時(shí)使用Apache Hadoop

由于在本地系統(tǒng)上,只需10分鐘左右就可完成其獨(dú)立安裝,所以Apache Hadoop很適合于第一次嘗試。你可以試試WordCount示例(這是Hadoop的“hello world”示例),并瀏覽部分MapReduce的Java代碼 。

如果你并不想使用一個(gè)“真正的”Hadoop發(fā)行版本(請看下一節(jié))的話,那么選擇Apache Hadoop也是正確的。然而,我沒有理由不去使用Hadoop的一個(gè)發(fā)行版本——因?yàn)樗鼈円灿忻赓M(fèi)的、非商業(yè)版。

所以,對于真正的Hadoop項(xiàng)目來說,我強(qiáng)烈推薦使用一個(gè)Hadoop的發(fā)行版本來代替Apache Hadoop。下一節(jié)將會(huì)說明這種選擇的優(yōu)點(diǎn)。

Hadoop發(fā)行版本

Hadoop發(fā)行版本解決了在上一節(jié)中所提到的問題。發(fā)行版本提供商的商業(yè)模型百分之百地依賴于自己的發(fā)行版本。他們提供打包、工具和商業(yè)支持。而這些不僅極大地簡化了開發(fā),而且也極大地簡化了操作。

Hadoop發(fā)行版本將Hadoop生態(tài)系統(tǒng)所包含的不同項(xiàng)目打包在一起。這就確保了所有使用到的版本都可以順當(dāng)?shù)卦谝黄鸸ぷ?。發(fā)行版本會(huì)定期發(fā)布,它包含了不同項(xiàng)目的版本更新。

發(fā)行版本的提供商在打包之上還提供了用于部署、管理和監(jiān)控Hadoop集群的圖形化工具。采用這種方式,可以更容易地設(shè)置、管理和監(jiān)控復(fù)雜集群。節(jié)省了大量工作。

正如上節(jié)所提到的,獲取普通Apache Hadoop項(xiàng)目的商業(yè)支持是很艱難的,而提供商卻為自己的Hadoop發(fā)行版本提供了商業(yè)支持。

Hadoop發(fā)行版本提供商

目前,除了Apache Hadoop外, HortonWorks、Cloudera和MapR三駕馬車在發(fā)布版本上差不多齊頭并進(jìn)。雖然,在此期間也出現(xiàn)了其他的Hadoop發(fā)行版本。比如EMC公司的Pivotal HD、IBM的InfoSphere BigInsights。通過Amazon Elastic MapReduce(EMR),Amazon甚至在其云上提供了一個(gè)托管的、預(yù)配置的解決方案。

雖然很多別的軟件提供商沒有開發(fā)自己的Hadoop發(fā)行版本,但它們和某一個(gè)發(fā)行版本提供商相互合作。舉例來說,Microsoft和Hortonworks相互合作,特別是合作將Apache Hadoop引入到Windows Server操作系統(tǒng)和Windows Azure云服務(wù)中。另外一個(gè)例子是,Oracle通過將自己的軟硬件與Cloudera的Hadoop發(fā)行版本結(jié)合到一起,提供一個(gè)大數(shù)據(jù)應(yīng)用產(chǎn)品。而像SAP、Talend這樣的軟件提供商則同時(shí)支持幾個(gè)不同的發(fā)行版本。

如何選擇合適的Hadoop發(fā)行版本?

本文不會(huì)評估各個(gè)Hadoop的發(fā)行版本。然而,下面會(huì)簡短地介紹下主要的發(fā)行版本提供商。在不同的發(fā)行版本之間一般只有一些細(xì)微的差別,而提供商則將這些差別視為秘訣和自己產(chǎn)品的與眾不同之處。下面的列表解釋了這些差別:

  • Cloudera:最成型的發(fā)行版本,擁有最多的部署案例。提供強(qiáng)大的部署、管理和監(jiān)控工具。Cloudera開發(fā)并貢獻(xiàn)了可實(shí)時(shí)處理大數(shù)據(jù)的Impala項(xiàng)目。
  • Hortonworks:不擁有任何私有(非開源)修改地使用了100%開源Apache Hadoop的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元數(shù)據(jù)服務(wù)特性的提供商。并且,它們的Stinger開創(chuàng)性地極大地優(yōu)化了Hive項(xiàng)目。Hortonworks為入門提供了一個(gè)非常好的,易于使用的沙盒。Hortonworks開發(fā)了很多增強(qiáng)特性并提交至核心主干,這使得Apache Hadoop能夠在包括Windows Server和Windows Azure在內(nèi)的Microsft Windows平臺上本地運(yùn)行。
  • MapR:與競爭者相比,它使用了一些不同的概念,特別是為了獲取更好的性能和易用性而支持本地Unix文件系統(tǒng)而不是HDFS(使用非開源的組件)??梢允褂帽镜豒nix命令來代替Hadoop命令。除此之外,MapR還憑借諸如快照、鏡像或有狀態(tài)的故障恢復(fù)之類的高可用性特性來與其他競爭者相區(qū)別。該公司也領(lǐng)導(dǎo)著Apache Drill項(xiàng)目,本項(xiàng)目是Google的Dremel的開源項(xiàng)目的重新實(shí)現(xiàn),目的是在Hadoop數(shù)據(jù)上執(zhí)行類似SQL的查詢以提供實(shí)時(shí)處理。
  • Amazon Elastic Map Reduce(EMR):區(qū)別于其他提供商的是,這是一個(gè)托管的解決方案,其運(yùn)行在由Amazon Elastic Compute Cloud(Amazon EC2)和Amzon Simple Strorage Service(Amzon S3)組成的網(wǎng)絡(luò)規(guī)模的基礎(chǔ)設(shè)施之上。除了Amazon的發(fā)行版本之外,你也可以在EMR上使用MapR。臨時(shí)集群是主要的使用情形。如果你需要一次性的或不常見的大數(shù)據(jù)處理,EMR可能會(huì)為你節(jié)省大筆開支。然而,這也存在不利之處。其只包含了Hadoop生態(tài)系統(tǒng)中Pig和Hive項(xiàng)目,在默認(rèn)情況下不包含其他很多項(xiàng)目。并且,EMR是高度優(yōu)化成與S3中的數(shù)據(jù)一起工作的,這種方式會(huì)有較高的延時(shí)并且不會(huì)定位位于你的計(jì)算節(jié)點(diǎn)上的數(shù)據(jù)。所以處于EMR上的文件IO相比于你自己的Hadoop集群或你的私有EC2集群來說會(huì)慢很多,并有更大的延時(shí)。

上面的發(fā)行版本都能靈活地單獨(dú)使用或是與不同的大數(shù)據(jù)套件組合使用。而這期間出現(xiàn)的一些其它的發(fā)行版本則不夠靈活,會(huì)將你綁定至特定的軟件棧和(或)硬件棧。比如EMC的Pivotal HD原生地融合了Greenplum的分析數(shù)據(jù)庫,目的是為了在Hadoop,或Intel的Apache Hadoop發(fā)行版本之上提供實(shí)時(shí)SQL查詢和卓越的性能,Intel的Apache Hadoop發(fā)行版本為固態(tài)驅(qū)動(dòng)器進(jìn)行了優(yōu)化,這是其他Hadoop公司目前還沒有的做法。

所以,如果你的企業(yè)已經(jīng)有了特定的供應(yīng)方案棧,則一定要核查它支持哪個(gè)Hadoop發(fā)行版本。比如,如果你使用了Greeplum數(shù)據(jù)庫,那么Pivotal就可能是一個(gè)完美的選擇,而在其他情況下,可能更適合采取更加靈活的解決方案。例如,如果你已經(jīng)使用了Talend ESB,并且你想使用TalenD Big Data來啟動(dòng)你的大數(shù)據(jù)項(xiàng)目,那么你可以選擇你心儀的Hadoop發(fā)行版本,因?yàn)門alend并不依賴于Hadoop發(fā)行版本的某個(gè)特定提供商。

為了做出正確的選擇,請了解各個(gè)發(fā)行版本的概念并進(jìn)行試用。請查證所提供的工具并分析企業(yè)版加上商業(yè)支持的總費(fèi)用。在這之后,你就可以決定哪個(gè)發(fā)行版本是適合自己的。

何時(shí)使用Hadoop發(fā)行版本?

由于發(fā)行版本具有打包、工具和商業(yè)支持這些優(yōu)點(diǎn),所以在絕大多數(shù)使用情形下都應(yīng)使用Hadoop的發(fā)行版本。使用普通的(原文為plan,應(yīng)為plain)Apache Hadoop發(fā)布版本并在此基礎(chǔ)之上構(gòu)建自己的發(fā)行版本的情況是極少見的。你會(huì)要自己測試打包,構(gòu)建自己的工具,并自己動(dòng)手寫補(bǔ)丁。其他一些人已經(jīng)遇到了你將會(huì)遇到的同樣問題。所以,請確信你有很好的理由不使用Hadoop發(fā)行版本。

然而,就算是Hadoop發(fā)行版本也需要付出很大的努力。你還是需要為自己的MapReduce作業(yè)編寫大量代碼,并將你所有的不同數(shù)據(jù)源集成到Hadoop中。而這就是大數(shù)據(jù)套件的切入點(diǎn)。

大數(shù)據(jù)套件

你可以在Apache HadoopHadoop發(fā)行版本之上使用一個(gè)大數(shù)據(jù)套件。大數(shù)據(jù)套件通常支持多個(gè)不同的Hadoop發(fā)行版本。然而,某些提供商實(shí)現(xiàn)了自己的Hadoop解決方案。無論哪種方式,大數(shù)據(jù)套件為了處理大數(shù)據(jù)而在發(fā)行版本上增加了幾個(gè)更進(jìn)一步的特性:

  • 工具:通常,大數(shù)據(jù)套件是建立像Eclipse之類的IDE之上。附加插件方便了大數(shù)據(jù)應(yīng)用的開發(fā)。你可以在自己熟悉的開發(fā)環(huán)境之內(nèi)創(chuàng)建、構(gòu)建并部署大數(shù)據(jù)服務(wù)。
  • 建模:Apache HadoopHadoop發(fā)行版本為Hadoop集群提供了基礎(chǔ)設(shè)施。然而,你仍然要寫一大堆很復(fù)雜的代碼來構(gòu)建自己的MapReduce程序。你可以使用普通的Java來編寫這些代碼,或者你也可以那些已經(jīng)優(yōu)化好的語言,比如PigLatin或Hive查詢語言(HQL),它們生成MapReduce代碼。大數(shù)據(jù)套件提供了圖形化的工具來為你的大數(shù)據(jù)服務(wù)進(jìn)行建模。所有需要的代碼都是自動(dòng)生成的。你只用配置你的作業(yè)(即定義某些參數(shù))。這樣實(shí)現(xiàn)大數(shù)據(jù)作業(yè)變得更容易和更有效率。
  • 代碼生成:生成所有的代碼。你不用編寫、調(diào)試、分析和優(yōu)化你的MapReduce代碼。
  • 調(diào)度:需要調(diào)度和監(jiān)控大數(shù)據(jù)作業(yè)的執(zhí)行。你無需為了調(diào)度而編寫cron作業(yè)或是其他代碼。你可以很容易地使用大數(shù)據(jù)套件來定義和管理執(zhí)行計(jì)劃。
  • 集成Hadoop需要集成所有不同類技術(shù)和產(chǎn)品的數(shù)據(jù)。除了文件和SQL數(shù)據(jù)庫之外,你還要集成NoSQL數(shù)據(jù)庫、諸如Twitter或Facebook這樣的社交媒體、來自消息中間件的消息、或者來自類似于Salesforce或SAP的B2B產(chǎn)品的數(shù)據(jù)。通過提供從不同接口到Hadoop和后端的眾多連接器,大數(shù)據(jù)套件為集成提供了很多幫助。你不用手工編寫連接代碼,你只需使用圖形化的工具來集成并映射所有這些數(shù)據(jù)。集成能力通常也具有數(shù)據(jù)質(zhì)量特性,比如數(shù)據(jù)清洗以提高導(dǎo)入數(shù)據(jù)的質(zhì)量。

大數(shù)據(jù)套件提供商

大數(shù)據(jù)套件的數(shù)目在持續(xù)增長。你可以在幾個(gè)開源和專有提供商之間選擇。像IBM、Oracle、Microsoft等這樣的大部分大軟件提供商將某一類的大數(shù)據(jù)套件集成到自己的軟件產(chǎn)品組合中。而絕大多數(shù)的這些廠商僅只支持某一個(gè)Hadoop發(fā)行版本,要么是自己的,要么和某個(gè)Hadoop發(fā)行版本提供商合作。

從另外一方面來看,還有專注于數(shù)據(jù)處理的提供商可供選擇。它們提供的產(chǎn)品可用于數(shù)據(jù)集成、數(shù)據(jù)質(zhì)量、企業(yè)服務(wù)總線、業(yè)務(wù)流程管理和更進(jìn)一步的集成組件。既有像Informatica這樣的專有提供商,也有Talend或Pentaho這樣的開源提供商。某些提供商不只支持某一個(gè)Hadoop發(fā)行版本,而是同時(shí)支持很多的。比如,就在撰寫本文的時(shí)刻,Talend就可以和Apache Hadoop、Cloudera、Hortonworks、MapR、Amazon Elastic MapReduce或某個(gè)定制的自創(chuàng)發(fā)行版本(如使用EMC的Pivotal HD)一起使用。

如何選擇合適的大數(shù)據(jù)套件?

本文不會(huì)評估各個(gè)大數(shù)據(jù)套件。當(dāng)你選擇大數(shù)據(jù)套件時(shí),應(yīng)考慮幾個(gè)方面。下面這些應(yīng)該可以幫助你為自己的大數(shù)據(jù)問題作出合適的抉擇:

  • 簡單性:親自試用大數(shù)據(jù)套件。這也就意味著:安裝它,將它連接到你的Hadoop安裝,集成你的不同接口(文件、數(shù)據(jù)庫、B2B等等),并最終建模、部署、執(zhí)行一些大數(shù)據(jù)作業(yè)。自己來了解使用大數(shù)據(jù)套件的容易程度——僅讓某個(gè)提供商的顧問來為你展示它是如何工作是遠(yuǎn)遠(yuǎn)不夠的。親自做一個(gè)概念驗(yàn)證。
  • 廣泛性:是否該大數(shù)據(jù)套件支持廣泛使用的開源標(biāo)準(zhǔn)——不只是Hadoop和它的生態(tài)系統(tǒng),還有通過SOAP和REST web服務(wù)的數(shù)據(jù)集成等等。它是否開源,并能根據(jù)你的特定問題易于改變或擴(kuò)展?是否存在一個(gè)含有文檔、論壇、博客和交流會(huì)的大社區(qū)?
  • 特性:是否支持所有需要的特性?Hadoop的發(fā)行版本(如果你已經(jīng)使用了某一個(gè))?你想要使用的Hadoop生態(tài)系統(tǒng)的所有部分?你想要集成的所有接口、技術(shù)、產(chǎn)品?請注意過多的特性可能會(huì)大大增加復(fù)雜性和費(fèi)用。所以請查證你是否真正需要一個(gè)非常重量級的解決方案。是否你真的需要它的所有特性?
  • 陷阱:請注意某些陷阱。某些大數(shù)據(jù)套件采用數(shù)據(jù)驅(qū)動(dòng)的付費(fèi)方式(“數(shù)據(jù)稅”),也就是說,你得為自己處理的每個(gè)數(shù)據(jù)行付費(fèi)。因?yàn)槲覀兪窃谡務(wù)摯髷?shù)據(jù),所以這會(huì)變得非常昂貴。并不是所有的大數(shù)據(jù)套件都會(huì)生成本地Apache Hadoop代碼,通常要在每個(gè)Hadoop集群的服務(wù)器上安裝一個(gè)私有引擎,而這樣就會(huì)解除對于軟件提供商的獨(dú)立性。還要考慮你使用大數(shù)據(jù)套件真正想做的事情。某些解決方案僅支持將Hadoop用于ETL來填充數(shù)據(jù)至數(shù)據(jù)倉庫,而其他一些解決方案還提供了諸如后處理、轉(zhuǎn)換或Hadoop集群上的大數(shù)據(jù)分析。ETL僅是Apache Hadoop和其生態(tài)系統(tǒng)的一種使用情形。
  • 決策樹:框架vs.發(fā)行版本vs.套件

現(xiàn)在,你了解了Hadoop不同選擇之間的差異。最后, 讓我們總結(jié)并討論選擇Apache Hadoop框架、Hadoop發(fā)行版本或大數(shù)據(jù)套件的場合。

下面的“決策樹”將幫助你選擇合適的一種:

Apache:

  1. 學(xué)習(xí)并理解底層細(xì)節(jié)?
  2. 專家?自己選擇和配置?

發(fā)行版本:

  1. 容易的設(shè)置?
  2. 初學(xué)(新手)?
  3. 部署工具?
  4. 需要商業(yè)支持?

大數(shù)據(jù)套件:

  1. 不同數(shù)據(jù)源集成?
  2. 需要商業(yè)支持?
  3. 代碼生成?
  4. 大數(shù)據(jù)作業(yè)的圖形化調(diào)度?
  5. 實(shí)現(xiàn)大數(shù)據(jù)處理(集成、操作、分析)?

結(jié)論

Hadoop安裝有好幾種選擇。你可以只使用Apache Hadoop項(xiàng)目并從Hadoop生態(tài)系統(tǒng)中創(chuàng)建自己的發(fā)行版本。像Cloudera、Hortonworks或MapR這樣的Hadoop發(fā)行版本提供商為了減少用戶需要付出的工作,在Apache Hadoop之上添加了如工具、商業(yè)支持等特性。在Hadoop發(fā)行版本之上,為了使用如建模、代碼生成、大數(shù)據(jù)作業(yè)調(diào)度、所有不同種類的數(shù)據(jù)源集成等附加特性,你可以使用一個(gè)大數(shù)據(jù)套件。一定要評估不同的選擇來為自己的大數(shù)據(jù)項(xiàng)目做出正確的決策。

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

若不方便掃碼,搜微信號: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)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(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ù)說明請參見: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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }