ivaneeo's blog自由的力量,自由的生活。 |
摘要: 環(huán)境準(zhǔn)備
需要環(huán)境:
PC-1 Suse Linux 9 10.192.1.1
PC-2 Suse Linux 9 &n... 閱讀全文
摘要: Hive HBase Integration
Contents
Hive HBase Integration
Introduction
Storage Handlers
Usage
Column Mapping
Multiple Colu... 閱讀全文
一、安裝準(zhǔn)備
二、操作步驟(默認(rèn)在namenode上進(jìn)行)
三、啟動(dòng)HBase 1、通過(guò)shell腳本啟動(dòng)hbase。 四、一些異常的和注意事項(xiàng)
轉(zhuǎn):http://www.tech126.com/hadoop-hbase/ 基于現(xiàn)有的Hadoop集群,來(lái)搭建Hbase的環(huán)境 整個(gè)過(guò)程還是比較簡(jiǎn)單的 1. 下載Hbase源碼,并解壓
2.修改hbase-env.sh,加入java環(huán)境,并修改log位置
3. 修改hbase-site.xml,配置hbase
幾個(gè)配置的說(shuō)明:
4. 編輯regionservers文件,設(shè)置regionservers的服務(wù)器,和hadoop的slaves一樣即可 5. 啟動(dòng)Hbase
Hbase默認(rèn)只有一個(gè)Master,我們可以也啟動(dòng)多個(gè)Master:
不過(guò),其它的Master并不會(huì)工作,只有當(dāng)主Master down掉后 其它的Master才會(huì)選擇接管Master的工作 Hbase也有一個(gè)簡(jiǎn)單的web界面,來(lái)查看其狀態(tài)
參考:http://developer.yahoo.com/hadoop/tutorial/module2.html
Rebalancing Blocks如何添加新節(jié)點(diǎn)到集群: New nodes can be added to a cluster in a straightforward manner. On the new node, the same Hadoop version and configuration ( conf/hadoop-site.xml ) as on the rest of the cluster should be installed. Starting the DataNode daemon on the machine will cause it to contact the NameNode and join the cluster. (The new node should be added to the slaves file on the master server as well, to inform the master how to invoke script-based commands on the new node.) 如何在新的節(jié)點(diǎn)上平衡數(shù)據(jù): But the new DataNode will have no data on board initially; it is therefore not alleviating space concerns on the existing nodes. New files will be stored on the new DataNode in addition to the existing ones, but for optimum usage, storage should be evenly balanced across all nodes. This can be achieved with the automatic balancer tool included with Hadoop. The Balancer class will intelligently balance blocks across the nodes to achieve an even distribution of blocks within a given threshold, expressed as a percentage. (The default is 10%.) Smaller percentages make nodes more evenly balanced, but may require more time to achieve this state. Perfect balancing (0%) is unlikely to actually be achieved. The balancer script can be run by starting bin/start-balancer.sh in the Hadoop directory. The script can be provided a balancing threshold percentage with the -threshold parameter; e.g., bin/start-balancer.sh -threshold 5 . The balancer will automatically terminate when it achieves its goal, or when an error occurs, or it cannot find more candidate blocks to move to achieve better balance. The balancer can always be terminated safely by the administrator by running bin/stop-balancer.sh . The balancing script can be run either when nobody else is using the cluster (e.g., overnight), but can also be run in an "online" fashion while many other jobs are on-going. To prevent the rebalancing process from consuming large amounts of bandwidth and significantly degrading the performance of other processes on the cluster, the dfs.balance.bandwidthPerSec configuration parameter can be used to limit the number of bytes/sec each node may devote to rebalancing its data store. Copying Large Sets of FilesWhen migrating a large number of files from one location to another (either from one HDFS cluster to another, from S3 into HDFS or vice versa, etc), the task should be divided between multiple nodes to allow them all to share in the bandwidth required for the process. Hadoop includes a tool called distcp for this purpose. By invoking bin/hadoop distcp src dest , Hadoop will start a MapReduce task to distribute the burden of copying a large number of files from src to dest . These two parameters may specify a full URL for the the path to copy. e.g., "hdfs://SomeNameNode:9000/foo/bar/" and "hdfs://OtherNameNode:2000/baz/quux/"will copy the children of /foo/bar on one cluster to the directory tree rooted at /baz/quux on the other. The paths are assumed to be directories, and are copied recursively. S3 URLs can be specified withs3://bucket-name /key . Decommissioning Nodes如何從集群中刪除節(jié)點(diǎn):In addition to allowing nodes to be added to the cluster on the fly, nodes can also be removed from a cluster while it is running , without data loss. But if nodes are simply shut down "hard," data loss may occuras they may hold the sole copy of one or more file blocks. Nodes must be retired on a schedule that allows HDFS to ensure that no blocks are entirely replicated within the to-be-retired set of DataNodes. HDFS provides a decommissioning feature which ensures that this process is performed safely. To use it, follow the steps below: Step 1: Cluster configuration . If it is assumed that nodes may be retired in your cluster, then before it is started, an excludes file must be configured. Add a key named dfs.hosts.exclude to your conf/hadoop-site.xml file. The value associated with this key provides the full path to a file on the NameNode's local file system which contains a list of machines which are not permitted to connect to HDFS. Step 2: Determine hosts to decommission . Each machine to be decommissioned should be added to the file identified by dfs.hosts.exclude , one per line. This will prevent them from connecting to the NameNode. Step 3: Force configuration reload . Run the command bin/hadoop dfsadmin -refreshNodes . This will force the NameNode to reread its configuration, including the newly-updated excludes file. It will decommission the nodes over a period of time, allowing time for each node's blocks to be replicated onto machines which are scheduled to remain active. Step 4: Shutdown nodes . After the decommission process has completed, the decommissioned hardware can be safely shutdown for maintenance, etc. The bin/hadoop dfsadmin -report command will describe which nodes are connected to the cluster. Step 5: Edit excludes file again . Once the machines have been decommissioned, they can be removed from the excludes file. Running bin/hadoop dfsadmin -refreshNodes again will read the excludes file back into the NameNode, allowing the DataNodes to rejoin the cluster after maintenance has been completed, or additional capacity is needed in the cluster again, etc. Verifying File System HealthAfter decommissioning nodes, restarting a cluster, or periodically during its lifetime, you may want to ensure that the file system is healthy--that files are not corrupted or under-replicated, and that blocks are not missing. Hadoop provides an fsck command to do exactly this. It can be launched at the command line like so: bin/hadoop fsck [path If run with no arguments, it will print usage information and exit. If run with the argument / , it will check the health of the entire file system and print a report. If provided with a path to a particular directory or file, it will only check files under that path. If an option argument is given but no path, it will start from the file system root (/ ). The options may include two different types of options: Action options specify what action should be taken when corrupted files are found. This can be -move , which moves corrupt files to /lost+found , or -delete , which deletes corrupted files. Information options specify how verbose the tool should be in its report. The -files option will list all files it checks as it encounters them. This information can be further expanded by adding the -blocks option, which prints the list of blocks for each file. Adding -locations to these two options will then print the addresses of the DataNodes holding these blocks. Still more information can be retrieved by adding -racksto the end of this list, which then prints the rack topology information for each location. (See the next subsection for more information on configuring network rack awareness.) Note that the later options do not imply the former; you must use them in conjunction with one another. Also, note that the Hadoop program uses -files in a "common argument parser" shared by the different commands such as dfsadmin , fsck ,dfs , etc. This means that if you omit a path argument to fsck, it will not receive the -files option that you intend. You can separate common options from fsck-specific options by using -- as an argument, like so: bin/hadoop fsck -- -files -blocks The -- is not required if you provide a path to start the check from, or if you specify another argument first such as -move . By default, fsck will not operate on files still open for write by another client. A list of such files can be produced with the -openforwrite option.
摘要: 一、分布式計(jì)算開(kāi)源框架Hadoop實(shí)踐
在SIP項(xiàng)目設(shè)計(jì)的過(guò)程中,對(duì)于它龐大的日志在開(kāi)始時(shí)就考慮使用任務(wù)分解的多線程處理模式來(lái)分析統(tǒng)計(jì),在我從前寫(xiě)的文章《Tiger Concurrent Practice --日志分析并行分解設(shè)計(jì)與實(shí)現(xiàn)》中有所提到。但是由于統(tǒng)計(jì)的內(nèi)容暫時(shí)還是十分簡(jiǎn)單,所以就采用Memcache作為計(jì)數(shù)器,結(jié)合MySQL就完成了訪問(wèn)控制以及統(tǒng)計(jì)的工作。然而未來(lái),對(duì)于海量日志分析的... 閱讀全文
引子作為企業(yè)架構(gòu)師,我的職業(yè)習(xí)慣之一,就是不斷的探求各種新的有前景的概念和思想,看其是否有潛力為我所服務(wù)的來(lái)自各行各業(yè)的企業(yè)客戶帶來(lái)價(jià)值。同樣出于對(duì)這種理念的追求,我對(duì)NoSQL領(lǐng)域的關(guān)注了也有一段時(shí)間了,甚至從這個(gè)術(shù)語(yǔ)產(chǎn)生(或者錯(cuò)誤的產(chǎn)生?)之前就開(kāi)始了。Google首先在這方面點(diǎn)了一把火,發(fā)布了論文Big Table架構(gòu),對(duì)關(guān)系數(shù)據(jù)庫(kù)是銀彈這種普遍的信念提出了質(zhì)疑,而Amazon關(guān)于Dynamo的論文則緊隨其后。 過(guò)去的一年中我們見(jiàn)證了NoSQL強(qiáng)勁的勢(shì)頭,在這一領(lǐng)域有多達(dá)25種產(chǎn)品/解決方案發(fā)布,并且NoSQL的觸角已經(jīng)伸向了業(yè)界的各個(gè)角落。在此前提下,我最近考慮深入這一領(lǐng)域,評(píng)估一下我的客戶究竟如何才能從這種NoSQL運(yùn)動(dòng)中獲益。不僅如此,我還想探究對(duì)于企業(yè)來(lái)說(shuō),是否是到了該認(rèn)真考慮采納NoSQL的合適時(shí)機(jī)了。 相關(guān)廠商內(nèi)容什么是NoSQL——快速回顧像許多關(guān)注這一領(lǐng)域的人一樣,我不喜歡從本質(zhì)上將SQL與NoSQL這一術(shù)語(yǔ)對(duì)立起來(lái)。同時(shí)我對(duì)該術(shù)語(yǔ)現(xiàn)有的解釋"Not Only SQL"也不甚滿意。對(duì)我來(lái)說(shuō),我們這里所討論的并非是是否使用SQL。(相反的是,我們?nèi)匀豢梢赃x擇類(lèi)似SQL這樣的查詢接口(缺少對(duì)join等的支持)來(lái)與這些數(shù)據(jù)庫(kù)交互,使用現(xiàn)有的資源和技術(shù)來(lái)管理開(kāi)發(fā)伸縮性和可維護(hù)性。) 這一運(yùn)動(dòng)是要找到存儲(chǔ)和檢索數(shù)據(jù)的其他高效的途徑,而不是盲目地在任何情況下都把關(guān)系數(shù)據(jù)庫(kù)當(dāng)作萬(wàn)金油。因此,我認(rèn)為'Non Relational Database'(非關(guān)系型數(shù)據(jù)庫(kù))能夠更好的表達(dá)這一思想。 無(wú)論采用哪個(gè)名字,“非關(guān)系型數(shù)據(jù)庫(kù)”這一范圍所傳達(dá)出來(lái)的“囊括所有”類(lèi)型的意味,使得這一概念比較模糊(并且它還是否定型的)。這又使得人們(特別是企業(yè)中的決策者)對(duì)于哪些是屬于這個(gè)范圍,哪些不是,更重要的是,對(duì)他們來(lái)說(shuō)這到底意味著什么,感到非常迷惑。 為了解答這些疑問(wèn),我嘗試通過(guò)以下幾點(diǎn)特征的描述,來(lái)刻畫(huà)“非關(guān)系型數(shù)據(jù)庫(kù)”的內(nèi)在本質(zhì)。 所謂“非關(guān)系型數(shù)據(jù)庫(kù)”指的是
圍繞著圖中四個(gè)特征的(數(shù)據(jù)持久性、邏輯數(shù)據(jù)模型、數(shù)據(jù)分布模型和接口)“非關(guān)系型數(shù)據(jù)庫(kù)”的各種變形,在最近的一些文章中有詳盡的描述,并且在因特網(wǎng)上有著廣泛的傳播。所以我就不做過(guò)多繁復(fù)的描述,而是通過(guò)一些例子對(duì)關(guān)鍵的方向進(jìn)行總結(jié),供快速參考: 接口——REST (HBase,CouchDB,Riak等),MapReduce (HBase,CouchDB,MongoDB,Hypertable等),Get/Put (Voldemort,Scalaris等),Thrift (HBase,Hypertable,Cassandra等),語(yǔ)言特定的API(MongoDB)。 邏輯數(shù)據(jù)模型——面向鍵值對(duì)的(Voldemort,Dynomite 等),面向Column Family的(BigTable,HBase,Hypertable 等),面向文檔的(Couch DB,MongoDB等),面向圖的(Neo4j, Infogrid等) 數(shù)據(jù)分布模型——一致性和可用性(HBase,Hypertable, MongoDB等), 可用性和可分區(qū)性(Cassandra等)。一致性和可分區(qū)性的組合會(huì)導(dǎo)致一些非額定的節(jié)點(diǎn)產(chǎn)生可用性的損失。有趣的是目前還沒(méi)有一個(gè)“非關(guān)系型數(shù)據(jù)庫(kù)”支持這一組合。 數(shù)據(jù)持久性——基于內(nèi)存的(如Redis,Scalaris, Terrastore),基于磁盤(pán)的(如MongoDB,Riak等),或內(nèi)存及磁盤(pán)二者的結(jié)合(如HBase,Hypertable,Cassandra)。存儲(chǔ)的類(lèi)型有助于我們辨別該解決方案適用于哪種類(lèi)型。然而,在大多數(shù)情況下人們發(fā)現(xiàn)基于組合方案的解決方案是最佳的選擇。既能通過(guò)內(nèi)存數(shù)據(jù)存儲(chǔ)支持高性能,又能在寫(xiě)入足夠多的數(shù)據(jù)后存儲(chǔ)到磁盤(pán)來(lái)保證持續(xù)性。 如何將其與企業(yè)IT融合如今的企業(yè)中,并非所有用例都直觀地傾向于使用關(guān)系型數(shù)據(jù)庫(kù),或者都需要嚴(yán)格的ACID屬性(特別是一致性和隔離性)。在80年代及90年代,絕大部分存儲(chǔ)在企業(yè)數(shù)據(jù)庫(kù)里的數(shù)據(jù)都是結(jié)構(gòu)化的業(yè)務(wù)事務(wù)的“記錄”,必須用受控的方式來(lái)生成或訪問(wèn),而如今它已一去不復(fù)返了。無(wú)可爭(zhēng)辯的是,仍有這一類(lèi)型的數(shù)據(jù)在那里,并將繼續(xù)也應(yīng)該通過(guò)關(guān)系型數(shù)據(jù)庫(kù)來(lái)建模,存儲(chǔ)和訪問(wèn)。但對(duì)于過(guò)去15年以來(lái),隨著Web的發(fā)展,電子商務(wù)和社交計(jì)算的興起所引起的企業(yè)里不受控的非結(jié)構(gòu)化并且面向信息的數(shù)據(jù)大爆炸,該如何應(yīng)對(duì)呢?企業(yè)確實(shí)不需要關(guān)系型數(shù)據(jù)庫(kù)來(lái)管理這些數(shù)據(jù),因?yàn)殛P(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)決定了它不適用于這些數(shù)據(jù)的性質(zhì)和使用方式。 上圖總結(jié)了現(xiàn)今以web為中心的企業(yè)中信息管理的新興模式。而“非關(guān)系型數(shù)據(jù)庫(kù)” 是處理這些趨勢(shì)的最佳選擇(較之關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō)),提供了對(duì)非結(jié)構(gòu)化數(shù)據(jù)的支持,擁有支持分區(qū)的水平伸縮性,支持高可用性等等。 以下是支持這一觀點(diǎn)的一些實(shí)際應(yīng)用場(chǎng)景: 日志挖掘——集群里的多個(gè)節(jié)點(diǎn)都會(huì)產(chǎn)生服務(wù)器日志、應(yīng)用程序日志和用戶活動(dòng)日志等。對(duì)于解決生產(chǎn)環(huán)境中的問(wèn)題,日志挖掘工具非常有用,它能訪問(wèn)跨服務(wù)器的日志記錄,將它們關(guān)聯(lián)起來(lái)并進(jìn)行分析。使用“非關(guān)系型數(shù)據(jù)庫(kù)”來(lái)定制這樣的解決方案將會(huì)非常容易。 分析社交計(jì)算——許多企業(yè)如今都為用戶(內(nèi)部用戶、客戶和合作伙伴)提供通過(guò)消息論壇,博客等方式來(lái)進(jìn)行社交計(jì)算的能力。挖掘這些非結(jié)構(gòu)化的數(shù)據(jù)對(duì)于獲得用戶的喜好偏向以及進(jìn)一步提升服務(wù)有著至關(guān)重要的作用。使用“非關(guān)系型數(shù)據(jù)庫(kù)” 可以很好的解決這一需求。 外部數(shù)據(jù)feed聚合——許多情況下企業(yè)需要消費(fèi)來(lái)自合作伙伴的數(shù)據(jù)。顯然,就算經(jīng)過(guò)了多輪的討論和協(xié)商,企業(yè)對(duì)于來(lái)自合作伙伴的數(shù)據(jù)的格式仍然沒(méi)有發(fā)言權(quán)。同時(shí),許多情況下,基于合作伙伴業(yè)務(wù)的變更,這些數(shù)據(jù)格式也頻繁的發(fā)生變化。通過(guò)“非關(guān)系型數(shù)據(jù)庫(kù)”來(lái)開(kāi)發(fā)或定制一個(gè)ETL解決方案能夠非常成功的解決這一問(wèn)題。 高容量的EAI系統(tǒng)——許多企業(yè)的EAI系統(tǒng)都有高容量傳輸流(不管是基于產(chǎn)品的還是定制開(kāi)發(fā)的)。出于可靠性和審計(jì)的目的,這些通過(guò)EAI系統(tǒng)的消息流通常都需要持久化。對(duì)于這一場(chǎng)景,“非關(guān)系型數(shù)據(jù)庫(kù)” 再次體現(xiàn)出它十分適用于底層的數(shù)據(jù)存儲(chǔ),只要能給定環(huán)境中源系統(tǒng)和目標(biāo)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)更改和所需的容量。 前端訂單處理系統(tǒng)——隨著電子商務(wù)的膨脹,通過(guò)不同渠道流經(jīng)零售商、銀行和保險(xiǎn)供應(yīng)商、娛樂(lè)服務(wù)供應(yīng)商、物流供應(yīng)商等等的訂單、應(yīng)用、服務(wù)請(qǐng)求的容量十分巨大。同時(shí),由于不同渠道的所關(guān)聯(lián)的行為模式的限制,每種情況下系統(tǒng)所使用的信息結(jié)構(gòu)都有所差異,需要加上不同的規(guī)則類(lèi)型。在此之上,絕大部分?jǐn)?shù)據(jù)不需要即時(shí)的處理和后端對(duì)帳。所需要的是,當(dāng)終端用戶想要從任何地方推送這些數(shù)據(jù)時(shí),這些請(qǐng)求都能夠被捕獲并且不會(huì)被打斷。隨后,通常會(huì)有一個(gè)對(duì)帳系統(tǒng)將其更新到真正的后端源系統(tǒng)并更新終端用戶的訂單狀態(tài)。這又是一個(gè)可以應(yīng)用“非關(guān)系型數(shù)據(jù)庫(kù)”的場(chǎng)景,可用于初期存儲(chǔ)終端用戶的輸入。這一場(chǎng)景是體現(xiàn)“非關(guān)系型數(shù)據(jù)庫(kù)”的應(yīng)用的極佳例子,它具有高容量,異構(gòu)的輸入數(shù)據(jù)類(lèi)型和對(duì)帳的"最終一致性"等等特點(diǎn)。 企業(yè)內(nèi)容管理服務(wù)——出于各種各樣的目的,內(nèi)容管理在企業(yè)內(nèi)部得到了廣泛的應(yīng)用,橫跨多個(gè)不同的功能部門(mén)比如銷(xiāo)售、市場(chǎng)、零售和人力資源等。企業(yè)大多數(shù)時(shí)間所面臨的挑戰(zhàn)是用一個(gè)公共的內(nèi)容管理服務(wù)平臺(tái),將不同部門(mén)的需求整合到一起,而它們的元數(shù)據(jù)是各不相同的。這又是“非關(guān)系型數(shù)據(jù)庫(kù)”發(fā)揮作用的地方。 合并和收購(gòu)——企業(yè)在合并與收購(gòu)中面臨巨大的挑戰(zhàn),因?yàn)樗麄冃枰獙⑦m應(yīng)于相同功能的系統(tǒng)整合起來(lái)。“非關(guān)系型數(shù)據(jù)庫(kù)” 可解決這一問(wèn)題,不管是快速地組成一個(gè)臨時(shí)的公共數(shù)據(jù)存儲(chǔ),或者是架構(gòu)一個(gè)未來(lái)的數(shù)據(jù)存儲(chǔ)來(lái)調(diào)和合并的公司之間現(xiàn)有公共應(yīng)用程序的結(jié)構(gòu)。 但我們?nèi)绾尾拍軠?zhǔn)確的描述,相對(duì)于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),企業(yè)使用“非關(guān)系型數(shù)據(jù)庫(kù)”帶來(lái)的好處呢?下面是可通過(guò)非關(guān)系型數(shù)據(jù)庫(kù)的核心特點(diǎn)(正如上一節(jié)所討論的)而獲得的一些主要的好處,即企業(yè)的任何IT決策都會(huì)參考的核心參數(shù)——成本削減,更好的周轉(zhuǎn)時(shí)間和更優(yōu)良的質(zhì)量。 業(yè)務(wù)靈活性——更短的周轉(zhuǎn)時(shí)間“非關(guān)系型數(shù)據(jù)庫(kù)”能夠以兩種基本的方式帶來(lái)業(yè)務(wù)靈活性。
更佳的終端用戶體驗(yàn)——更優(yōu)越的質(zhì)量在現(xiàn)今企業(yè)IT中,應(yīng)用的質(zhì)量主要由終端用戶的滿意度來(lái)決定。“非關(guān)系型數(shù)據(jù)庫(kù)”通過(guò)解決如下終端用戶的考慮因素,能夠達(dá)到同樣的效果,而這些因素也是最容易發(fā)生和最難以處理的。
更低的所有者總成本在如今的競(jìng)爭(zhēng)市場(chǎng)中,企業(yè)IT支出隨時(shí)都要仔細(xì)審查,以合理的成本獲取合理的質(zhì)量才值得贊許。在這一領(lǐng)域中“非關(guān)系型數(shù)據(jù)庫(kù)”在一定程度上勝于傳統(tǒng)的數(shù)據(jù)庫(kù),特別是當(dāng)存儲(chǔ)和處理的數(shù)據(jù)容量很大時(shí)。
企業(yè)采用中所面臨的挑戰(zhàn)拋開(kāi)所有這些長(zhǎng)遠(yuǎn)的好處,在企業(yè)擁抱“非關(guān)系型數(shù)據(jù)庫(kù)”之前,當(dāng)然還需要經(jīng)歷各種各樣的挑戰(zhàn)。 不考慮因現(xiàn)有思想的轉(zhuǎn)換和缺乏信心而產(chǎn)生的來(lái)自高層的阻力,目前我認(rèn)為的最主要的戰(zhàn)術(shù)性挑戰(zhàn)是: 為“非關(guān)系型數(shù)據(jù)庫(kù)”認(rèn)定正確的應(yīng)用/使用場(chǎng)景盡管從理論上容易論證并非所有的企業(yè)數(shù)據(jù)都需要基于關(guān)系和ACID的系統(tǒng),然而由于關(guān)系型數(shù)據(jù)庫(kù)與企業(yè)數(shù)據(jù)間多年的綁定關(guān)系,要作出所有的數(shù)據(jù)可以通過(guò)非關(guān)系的解決方案而解耦的決定仍然有很多困難。許多時(shí)候IT經(jīng)理(以及其它對(duì)于應(yīng)用程序負(fù)有核心的底線責(zé)任的各級(jí)人員)不明白他們將會(huì)失去什么,這樣的擔(dān)憂對(duì)于從關(guān)系型數(shù)據(jù)庫(kù)轉(zhuǎn)變出來(lái)比較不利。企業(yè)IT最有價(jià)值的資產(chǎn)就是數(shù)據(jù)。因此,要作出決定使用一種不太明確或者未被廣泛采用的解決方案來(lái)管理同樣的數(shù)據(jù),這種能力不僅需要轉(zhuǎn)換思維方式,同時(shí)還需要來(lái)自高層的強(qiáng)大的支持(和推動(dòng))。 我們?nèi)绾芜x擇最適合我們的產(chǎn)品/解決方案另一個(gè)重大的挑戰(zhàn)是找出合適的產(chǎn)品/工具來(lái)提供“非關(guān)系型數(shù)據(jù)庫(kù)”。正如前面所提到的那樣,現(xiàn)今業(yè)界里面有多于25種不同的產(chǎn)品和解決方案,它們?cè)谒膫€(gè)方面有著不同的特點(diǎn)。正因?yàn)槊總€(gè)產(chǎn)品在這四個(gè)方面特點(diǎn)各異,所以要選擇一個(gè)產(chǎn)品來(lái)應(yīng)對(duì)所有的需求顯得尤為困難。有的時(shí)候,可能在企業(yè)的不同部門(mén)使用到多種類(lèi)型的非關(guān)系型數(shù)據(jù)庫(kù),最后人們可能會(huì)完全出于對(duì)標(biāo)準(zhǔn)的需要而轉(zhuǎn)向關(guān)系型數(shù)據(jù)庫(kù)。 如何獲得規(guī)模經(jīng)濟(jì)這一想法本質(zhì)上是從前一個(gè)問(wèn)題分支出來(lái)的。如果一個(gè)組織需要使用多個(gè)非關(guān)系型數(shù)據(jù)庫(kù)解決方案(由于單個(gè)方案的適用問(wèn)題),那么保證在技術(shù)(開(kāi)發(fā)者,管理者,支持人員),基礎(chǔ)設(shè)施(硬件成本,軟件許可成本,支持成本,咨詢成本),以及工件(公共組件和服務(wù))方面的規(guī)模經(jīng)濟(jì)就是一個(gè)大問(wèn)題。這一方面與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)解決方案比較起來(lái)確實(shí)更為嚴(yán)峻,因?yàn)榇蟛糠謺r(shí)間組織的數(shù)據(jù)存儲(chǔ)都是以共享服務(wù)的模式在運(yùn)行的。 我們?nèi)绾伪WC解決方案的可移植性從“非關(guān)系型數(shù)據(jù)庫(kù)”的發(fā)展來(lái)看,我們可以很直觀地推測(cè)在未來(lái)的幾年中這一領(lǐng)域會(huì)有許多變化,比如供應(yīng)商的合并,功能的進(jìn)步以及標(biāo)準(zhǔn)化。所以對(duì)于企業(yè)來(lái)說(shuō)一個(gè)更好的策略是不要把寶押在某個(gè)特定的產(chǎn)品/解決方案上,以后才可以更靈活的轉(zhuǎn)換到一個(gè)更好的經(jīng)過(guò)考驗(yàn)的產(chǎn)品。 由于現(xiàn)在的非關(guān)系型產(chǎn)品/解決方案大部分是私有的,因此IT決策者在考慮嘗試“非關(guān)系型數(shù)據(jù)庫(kù)”之前,不得不認(rèn)真考慮可移植性這一重要的問(wèn)題。這純粹是出于保護(hù)現(xiàn)有投資的需要。 我們?nèi)绾潍@得合適的產(chǎn)品支持類(lèi)型現(xiàn)在的“非關(guān)系型數(shù)據(jù)庫(kù)”能通過(guò)外部組織而提供支持方案的少之又少。就算有,也無(wú)法與Oracle,IBM或者微軟等相比。特別是在數(shù)據(jù)恢復(fù),備份和特定的數(shù)據(jù)恢復(fù)方面,由于許多“非關(guān)系型數(shù)據(jù)庫(kù)”在這些方面未能提供一個(gè)健壯而易于使用的機(jī)制,對(duì)于企業(yè)決策者來(lái)說(shuō),仍存在很大的問(wèn)題。 我們?nèi)绾晤A(yù)算整體成本與重量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)相比,“非關(guān)系型數(shù)據(jù)庫(kù)”通常在性能和伸縮性特征方面能提供的數(shù)據(jù)更少。我也沒(méi)有發(fā)現(xiàn)有TPC基準(zhǔn)程序方面和類(lèi)似的其它方面的數(shù)據(jù)。這將企業(yè)決策者置于了一個(gè)“沒(méi)有方向”的情況下,因?yàn)樗麄儾恢佬枰谟布④浖S可、基礎(chǔ)設(shè)施管理和支持等方面支出多大的費(fèi)用。要得出一個(gè)預(yù)算估計(jì),缺乏判斷的數(shù)據(jù)就成了一個(gè)主要的障礙。因此在項(xiàng)目啟動(dòng)階段,大部分情況下決策者還是會(huì)選擇基于熟悉的關(guān)系型數(shù)據(jù)庫(kù)的解決方案。 有時(shí)候,就算可以得到這些數(shù)字,但也不足以用來(lái)形成TCO模型并與傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)和非關(guān)系型數(shù)據(jù)存儲(chǔ)進(jìn)行整體的成本分析(Capex+Opex)比較。通常情況下水平伸縮性所要求的大量的硬件機(jī)器(以及軟件許可成本,支持成本),如果與垂直伸縮性乍一比較,會(huì)讓人覺(jué)得戰(zhàn)戰(zhàn)兢兢,除非由此帶來(lái)的好處經(jīng)過(guò)基于TCO模型的全方位比較仍然被證明是可以持續(xù)的。 關(guān)于如何采用NoSQL的兩點(diǎn)思考這是否意味著目前來(lái)看企業(yè)應(yīng)該對(duì)NoSQL運(yùn)動(dòng)持觀望的態(tài)度呢?并非如此。誠(chéng)然,“非關(guān)系型數(shù)據(jù)庫(kù)”對(duì)于廣泛的采用來(lái)說(shuō)還未到完全成熟的階段。但“非關(guān)系型數(shù)據(jù)庫(kù)”作為未來(lái)企業(yè)骨架的潛力仍不能忽視。特別是不遠(yuǎn)的將來(lái)企業(yè)將更多地處理大容量的半結(jié)構(gòu)化/非結(jié)構(gòu)化以及最終一致性的數(shù)據(jù),而不是相對(duì)而言小容量的,嚴(yán)格結(jié)構(gòu)化的遵循ACID的數(shù)據(jù)。 所以現(xiàn)在而言至關(guān)重要的是做企業(yè)的關(guān)鍵決策人的思想工作,讓他們明白企業(yè)的數(shù)據(jù)處理需要使用“非關(guān)系型數(shù)據(jù)庫(kù)”。在這一過(guò)程中,要采取一些漸進(jìn)的步驟把“非關(guān)系型數(shù)據(jù)庫(kù)”應(yīng)用到企業(yè)IT的一些關(guān)鍵的方面(技術(shù),人員和流程),并產(chǎn)生一定的價(jià)值。這樣,就可以用一種緩慢而穩(wěn)健的方式從整體上來(lái)解決我們之前所總結(jié)出來(lái)的一系列問(wèn)題。 采用一個(gè)產(chǎn)品/解決方案如今市場(chǎng)上的選擇非常多樣化,可根據(jù)“非關(guān)系型數(shù)據(jù)庫(kù)”側(cè)重的面不同而進(jìn)行差異化的處理。與此同時(shí),企業(yè)應(yīng)用場(chǎng)景可能需要不同類(lèi)型的特點(diǎn)。然而以不同的解決方案來(lái)處理不同的應(yīng)用/使用場(chǎng)景從規(guī)模經(jīng)濟(jì)的角度出發(fā)對(duì)于企業(yè)是不適宜的。因此最好是根據(jù)目標(biāo)應(yīng)用的需要最終落實(shí)到某一個(gè)具體的產(chǎn)品/解決方案上。需要注意的是大多數(shù)的解決方案在特性上都會(huì)有一些折中,有些特性可能在其它的產(chǎn)品中可以獲得,有些可能只是在發(fā)展路線圖當(dāng)中暫時(shí)設(shè)定了一個(gè)位置。因?yàn)榇蟛糠值漠a(chǎn)品會(huì)在不久的將來(lái)不斷趨于成熟,因此可以通過(guò)不同配置來(lái)提供不同的解決方案。所以只要現(xiàn)有的解決方案能適合目前大部分的需要,不妨作為一個(gè)起點(diǎn)將其采納。 選擇產(chǎn)品/解決方案的經(jīng)驗(yàn)法則
這里有一份一系列“非關(guān)系型數(shù)據(jù)庫(kù)”的對(duì)照表。對(duì)于現(xiàn)在正認(rèn)真考慮采用的企業(yè)來(lái)說(shuō),這是一個(gè)不錯(cuò)的起點(diǎn)。為了更貼近企業(yè)本身的情況,從25+的集合中挑選出的子集所用到的的關(guān)鍵選擇標(biāo)準(zhǔn)是:
有了這些過(guò)濾標(biāo)準(zhǔn),我可以精簡(jiǎn)這一列表,符合目前企業(yè)可用的產(chǎn)品有 MongoDB (下一版本就會(huì)提供shards支持),Riak,Hypertable和HBase。下面這個(gè)表格中總結(jié)了這四個(gè)產(chǎn)品的主要特性。一個(gè)企業(yè)可以基于自己具體的實(shí)際情況從中作出選擇,找到最適合自己需要的特性。
數(shù)據(jù)訪問(wèn)抽象為數(shù)據(jù)訪問(wèn)創(chuàng)建一個(gè)單獨(dú)的抽象層對(duì)于“非關(guān)系型數(shù)據(jù)庫(kù)”來(lái)說(shuō)是必須的。它可以帶來(lái)多方面的好處。首先,應(yīng)用開(kāi)發(fā)者可以與底層解決方案的細(xì)節(jié)完全隔離開(kāi)來(lái)。這對(duì)于技術(shù)方面的伸縮性帶來(lái)了好處。同時(shí)未來(lái)如果需要更改底層的解決方案也很方便。這也以一個(gè)標(biāo)準(zhǔn)的方式滿足了多個(gè)應(yīng)用的要求(即去掉了Join,Group by等復(fù)雜特性的SQL)。 為性能和伸縮性創(chuàng)建模型不管選擇怎樣的解決方案,使用標(biāo)準(zhǔn)技術(shù)(比如排隊(duì)網(wǎng)絡(luò)模型,分層排隊(duì)網(wǎng)絡(luò)等)來(lái)對(duì)性能和伸縮性進(jìn)行建模都是高度推薦的。它能夠?yàn)榛镜姆?wù)器規(guī)劃、拓?fù)湟约罢w的軟件許可證成本,管理運(yùn)行等提供必要的數(shù)據(jù)。這將實(shí)質(zhì)上成為所有預(yù)算計(jì)劃的主要參考數(shù)據(jù),并對(duì)作出決策提供幫助。 構(gòu)建顯式的冗余要防止數(shù)據(jù)丟失,除了將數(shù)據(jù)復(fù)制到備份服務(wù)器上,沒(méi)有其它的辦法了。盡管許多非關(guān)系型數(shù)據(jù)庫(kù)提供自動(dòng)復(fù)制功能,但仍然存在主節(jié)點(diǎn)單點(diǎn)失效的風(fēng)險(xiǎn)。因此最好是使用次節(jié)點(diǎn)備份,并準(zhǔn)備好用于數(shù)據(jù)恢復(fù)和自動(dòng)數(shù)據(jù)修復(fù)的腳本。出于這樣的目的,應(yīng)當(dāng)充分的了解目標(biāo)解決方案的物理數(shù)據(jù)模型,找出可能的恢復(fù)機(jī)制備選方案,基于企業(yè)的整體需求和實(shí)踐來(lái)對(duì)這些選項(xiàng)作出評(píng)估。 構(gòu)建公共數(shù)據(jù)服務(wù)平臺(tái)就像公共共享服務(wù)的關(guān)系型數(shù)據(jù)庫(kù)一樣,也可以構(gòu)建非關(guān)系型數(shù)據(jù)庫(kù)的公共數(shù)據(jù)服務(wù)來(lái)促進(jìn)規(guī)模經(jīng)濟(jì)效應(yīng),滿足基礎(chǔ)設(shè)施和支持的需要。這對(duì)于未來(lái)進(jìn)一步演化和更改也有幫助。這可以作為愿望列表上的最終目標(biāo),通過(guò)中期或長(zhǎng)期的努力來(lái)達(dá)到這一成熟水平。然而,初始階段就設(shè)立這樣的遠(yuǎn)景有助于在整個(gè)過(guò)程中作出正確的決策。 壯大企業(yè)的技術(shù)力量每個(gè)組織都有一部分人對(duì)于學(xué)習(xí)新生的和非傳統(tǒng)的事物充滿熱忱。成立這樣的小組,并挑選人員(全職的或兼職的),密切關(guān)注這方面的動(dòng)向,了解問(wèn)題和挑戰(zhàn),進(jìn)行前瞻性的思考,能夠?yàn)槭褂眠@些技術(shù)的項(xiàng)目提供方向和幫助。同時(shí),這個(gè)小組還可以為決策者澄清炒作的疑云,提供來(lái)自真實(shí)數(shù)據(jù)的觀點(diǎn)。 建立與產(chǎn)品社區(qū)的關(guān)系選擇了產(chǎn)品之后,與產(chǎn)品社區(qū)建立起良好的關(guān)系對(duì)于雙方的成功都有極大的好處。許多非關(guān)系型數(shù)據(jù)庫(kù)目前都有十分活躍的社區(qū),非常愿意相互幫助。企業(yè)與社區(qū)之間的良好合作能給大家?guī)?lái)一個(gè)雙贏的局面。 如能提前對(duì)問(wèn)題和解決方案有了解,那么企業(yè)在對(duì)某些特性或版本作出決策時(shí)就能成竹在胸。反過(guò)來(lái),企業(yè)又能對(duì)產(chǎn)品特性的路線圖產(chǎn)生影響作用,這對(duì)他們自身和社區(qū)都是有利的。另一方面,社區(qū)也能從實(shí)際層次的問(wèn)題中得到反饋,從而豐富和完善產(chǎn)品。來(lái)自大型企業(yè)的成功案例同樣能讓他們處于領(lǐng)先。 迭代前進(jìn)考慮到非關(guān)系型數(shù)據(jù)庫(kù)相對(duì)的成熟度,風(fēng)險(xiǎn)最小的采用策略就是遵循迭代開(kāi)發(fā)的方法論。構(gòu)建公共數(shù)據(jù)服務(wù)平臺(tái)和標(biāo)準(zhǔn)化數(shù)據(jù)訪問(wèn)抽象不可能是一蹴而就的。相反,通過(guò)迭代和面向重構(gòu)的方式能更好的達(dá)到目標(biāo)。運(yùn)用不太成熟的技術(shù)進(jìn)行轉(zhuǎn)型的過(guò)程,中途改變解決方案也不會(huì)太意外的。與此同時(shí),采用敏捷的方式來(lái)看待事物,能夠幫助建立起一個(gè)能從管理和實(shí)現(xiàn)兩方面不斷吸引改進(jìn)的開(kāi)放態(tài)度。 然而,在這一問(wèn)題上實(shí)現(xiàn)迭代,非常重要的一點(diǎn)是定義一個(gè)決策條件矩陣。比如操作指南(和例子),來(lái)判斷一個(gè)應(yīng)用的對(duì)象模型是否適合關(guān)系型或非關(guān)系的范圍,對(duì)基礎(chǔ)設(shè)施規(guī)劃作出指導(dǎo),列出必需的測(cè)試用例等等。 結(jié)束語(yǔ)企業(yè)的非關(guān)系型數(shù)據(jù)庫(kù)采用過(guò)程中最大的挑戰(zhàn)就是轉(zhuǎn)變決策者的思想觀念——讓他們相信并非所有的數(shù)據(jù)/對(duì)象都適合關(guān)系型數(shù)據(jù)庫(kù)。 最能證明這一點(diǎn)就是選擇合適的用例去嘗試非關(guān)系型數(shù)據(jù)庫(kù),進(jìn)而證實(shí)在合適的背景下,非關(guān)系型數(shù)據(jù)庫(kù)是比關(guān)系型數(shù)據(jù)庫(kù)更有效的解決方案。 找到一些“非關(guān)鍵業(yè)務(wù)”(但能立竿見(jiàn)影的)適合于非關(guān)系型數(shù)據(jù)庫(kù)的項(xiàng)目。這些項(xiàng)目的成功(甚至失敗)都能有助于觀念的改變。這也能有助于不斷學(xué)習(xí)如何才能以一種不同的方式來(lái)更好的采用非關(guān)系型數(shù)據(jù)庫(kù)。這些少兒學(xué)步般的嘗試所作出的努力與投入都是值得的,如果企業(yè)想要在將來(lái)使用“非關(guān)系型數(shù)據(jù)庫(kù)”來(lái)重塑其信息管理體系的話。 關(guān)于作者Sourav Mazumder目前是InfoSys Technologies的首席技術(shù)架構(gòu)師。他在信息技術(shù)領(lǐng)域有14年以上的經(jīng)驗(yàn)。作為Infosys技術(shù)顧問(wèn)團(tuán)的主要成員,Sourav為Infosys在美國(guó)、歐洲、澳洲和日本的主要客戶,提供保險(xiǎn)、電信、銀行、零售、安全、交通以及建筑、工程、施工等多個(gè)行業(yè)的服務(wù)。 他曾參與Web項(xiàng)目的技術(shù)架構(gòu)和路線圖定義,SOA戰(zhàn)略實(shí)施,國(guó)際戰(zhàn)略定義,UI組件化,性能建模,伸縮性分析,非結(jié)構(gòu)化數(shù)據(jù)管理等等。Sourav參考的Infosys自身的核心銀行產(chǎn)品Finacle,也為他提供了豐富的產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)。Sourav還曾參與開(kāi)發(fā)Infosys的J2EE可重用框架,和定義Infosys在架構(gòu)方面和開(kāi)發(fā)定制應(yīng)用方面的軟件工程方法。Sourav的經(jīng)歷還包括在保證架構(gòu)合規(guī)和開(kāi)發(fā)項(xiàng)目的治理方面的工作。 Sourav是iCMG認(rèn)證的軟件架構(gòu)師,同時(shí)也是TOGAF 8認(rèn)證的執(zhí)行者。Sourav最近在LISA伯克利全球化會(huì)議上發(fā)表了演講。Sourav關(guān)于SOA的最新白皮書(shū)在社區(qū)里十分流行。 Sourav目前關(guān)注NoSQL,Web 2.0,治理,性能建構(gòu)和全球化。 感謝馬國(guó)耀對(duì)本文的審校。 給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.infoq.com。也歡迎大家加入到InfoQ中文站用戶討論組中與我們的編輯和其他讀者朋友交流。 Install Oracle 64Bit On Ubuntu
Creating A Listener For the New DB
It's not a requirement to create a Listener before you create a database, but it's a good idea to do so. A Listener is a process which listens on a well-known port for requests from remote users seeking to connect to the Oracle database. Without one, therefore, you'd only ever be able to connect to the database whilst directly logged onto the server itself, which is obviously a bit of a show-stopper!
To create a Listener, we use the Network Configuration Assistant. To invoke the Assistant, just issue the command netca (should be in path) as the oracle user in a new terminal session. Press "Next" to accept the defaults. After a bit you will get to "Finish" which is where you want to finish.
netca
Creating a Database
First, find out the id of the oinstall group. You can find this from looking in System -> Admin -> Users and Groups -> Manage Groups. Alternatively, use:
cat /etc/group | grep oinstall
NB: The oinstall Group Id should be 1002 or similar. If the User/Group Applet is giving "0" then try double checking the Properties of the group. I've noticed that the Users/Groups Applet can be unreliable...
Then, as root, perform the following command. (NB: This can't be performed by sudo, you must be root)
echo "<dba_group_gid>" > /proc/sys/vm/hugetlb_shm_group
This allows the oinstall group access to hugetlbpages. Without this you will get error "ORA-27125: unable to create shared memory segment" when setting up the database.
Run the Database Configuration Assistant, or DBCA for short. You will need to be the Oracle user you set up earlier.
dbca
This is not a difficult thing to do: mostly, in our case, it involves clicking "Next" to walk through the wizard, accepting all defaults. You will be prompted when you actually need to enter something.
Just be sure to specify the correct database name (it should match what is set as your ORACLE_SID, but with a proper domain extension. By default the ORACLE_SID is orcl10, and can be found out by running the oraenv command in the oracle bin directory...
Use the password "oracle" for the password and write down the values it spits out at the end...!
NB: If you get a "ORA-12547- Lost Contact" error, make sure you have libaio1installed (sudo apt-get install libaio1)...
If it all went well you now have an Oracle Db on your machine. Pat yourself on the back for getting this far and sticking with it. You still have a way to go before its all installed but go and have some tea to celebrate...! And then go on to Part 2... 關(guān)于kindle你必須知道的幾點(diǎn):
中文顯示Kindle 3的中文顯示基本上沒(méi)有問(wèn)題了,只有中文標(biāo)題會(huì)偶爾出現(xiàn)口字亂碼。豆瓣上有個(gè)小tip: kindle 3 不裝多看系統(tǒng)也可以看中文 ( http://www.douban.com/group/topic/14228764/ ),在主頁(yè)輸入命令: ;debugOn (三行后都要回車(chē))就可以改成中文顯示,我已經(jīng)試驗(yàn)成功。txt要重存成UTF8 免費(fèi)3G(詳見(jiàn):綁定Kindle 支持國(guó)內(nèi)上網(wǎng)) 文檔轉(zhuǎn)換:建議通過(guò)發(fā)送文檔(UTF-8編碼txt/html/doc/pdf/jpg等)到你的私人kindle郵箱 ***@free.kindle.com來(lái)直接轉(zhuǎn)換文檔,方便快捷還免費(fèi),只要打開(kāi)kindle的wifi功能并聯(lián)網(wǎng)就能在一分鐘內(nèi)同步。一旦發(fā)送成功,amazon會(huì)給你回復(fù)一封郵件(如下圖),告訴你文檔已經(jīng)傳輸成功,可以打開(kāi)kindle的wifi(發(fā)送到***@free.kindle.com的文檔),然后文檔會(huì)在兩分鐘內(nèi)同步到你的kindle。另外,回復(fù)的郵件里也給出了轉(zhuǎn)換后的azw格式文檔的下載地址,這樣你也可以先把文檔下載到電腦里,待會(huì)用數(shù)據(jù)線傳輸。更多介紹參考(英文) Sending Personal Documents to Kindle. UTF-8編碼:txt文檔最好用綠色小巧且免費(fèi)的notepad2轉(zhuǎn)換為UTF-8編碼(見(jiàn)下圖),doc沒(méi)有太大限制,docx格式目前還處于實(shí)驗(yàn)階段,有時(shí)轉(zhuǎn)換會(huì)出錯(cuò)。 NOTEPAD2:下載地址:http://sourceforge.net/projects/notepad2/files/ 電池續(xù)航:kindle如果不進(jìn)行翻頁(yè)和聯(lián)網(wǎng),停留在任何頁(yè)面都是根本不耗電的,所以Kindle沒(méi)有電源的開(kāi)關(guān)鍵;如果一直開(kāi)著wifi或3G,kindle的電池只能堅(jiān)持7天,如果關(guān)閉wifi,充完電后可以堅(jiān)持一個(gè)月,建議不用wifi的時(shí)候按menu鍵關(guān)閉wifi功能。 收費(fèi)服務(wù):文檔發(fā)送到***@kindle.com 收費(fèi)(via Whispernet,但也不是很貴,50MB大小以下的單個(gè)文檔,美國(guó)境內(nèi)是$0.15美元每次,美國(guó)境外$ .99美元每次),并且需要kindle的3G功能。 同步管理:kindle.amazon.com , 在這里查看你已經(jīng)購(gòu)買(mǎi)的書(shū)籍或者郵件上傳的文檔,還可以查看你在kindle上添加的讀書(shū)筆記,可以與twitter/facebook帳號(hào)綁定。 瀏覽器:菜單路徑Menu–>Experimental–>Browser,這里還可以看到音樂(lè)播放的菜單 音樂(lè)播放:菜單路徑同上:Menu–>Experimental 重裝系統(tǒng):不喜歡Kindle3的原裝系統(tǒng)?安裝國(guó)產(chǎn)Kindle系統(tǒng)”多看”吧。喜歡折騰的童鞋,可以參考這位童鞋的日志:Kindle 3折騰記. “多看的缺點(diǎn)就是還不如原版系統(tǒng)穩(wěn)定,但是亮點(diǎn)太多了,多支持了chm,epub等格式不說(shuō),光是對(duì)于pdf的優(yōu)化,就是個(gè)值得嘗試的理由。更不待說(shuō)它對(duì)于中文支持的大大改進(jìn)。” 鏈接: 多看 for Kindle2\Kindle3 軟件下載區(qū) 支持格式:郵件發(fā)送文檔支持的格式有: 推薦書(shū)籍:應(yīng)用推薦:開(kāi)場(chǎng)白: 口水: 一、2個(gè)注意事項(xiàng): 解決方法: 另外,在 /etc/profile/ 加入 export $HIVE_HOME=/work/hive 二、啟動(dòng)運(yùn)行環(huán)境 2啟動(dòng)HBase 3啟動(dòng)Zookeeper 三、執(zhí)行 在運(yùn)行一個(gè)在Hive中建表語(yǔ)句,并且將數(shù)據(jù)導(dǎo)入 在Hive與HBase關(guān)聯(lián)的表中 插入一條數(shù)據(jù) 插入數(shù)據(jù)時(shí)采用了MapReduce的策略算法,并且同時(shí)向HBase寫(xiě)入,如圖所示: 在HBase shell中運(yùn)行 scan 'xyz' 和describe "xyz" 命令,查看表結(jié)構(gòu),運(yùn)行結(jié)果如圖所示: xyz是通過(guò)Hive在Hbase中創(chuàng)建的表,剛剛在Hive的建表語(yǔ)句中指定了映射的屬性 "hbase.columns.mapping" = ":key,cf1:val" 和 在HBase中建表的名稱 "hbase.table.name" = "xyz" 在hbase在運(yùn)行put命令,插入一條記錄 在hive上運(yùn)行查詢語(yǔ)句,看看剛剛在hbase中插入的數(shù)據(jù)有沒(méi)有同步過(guò)來(lái), 最終的效果 先這樣,稍后我將繼續(xù)更新,感謝你的閱讀。
相關(guān)文章: HBase入門(mén)篇4 –end–
豆瓣讀書(shū) 向你推薦有關(guān) HBase、 Hadoop、 Hive、 MapReduce、 云計(jì)算、 架構(gòu)設(shè)計(jì)、 類(lèi)別的圖書(shū)。
|