hadoop學習(九)Hadoop2.2.0+HA+zookeeper3.4.5詳細配置過程+錯誤處理(2)
Hadoop2.2.0+HA+zookeeper3.4.5詳細配置過程+體系結構+錯誤處理(2)
這篇文章,主要是針對zookeeper和hadoop叢集的整體測試,以及自己在實際過程遇到的問題和解決思路。
如有轉載,請注意明出處!
http://blog.csdn.net/yczws1/article/details/23594149
測試啟動
按照下面的每一步執行,執行完一定要看輸出的資訊,注意warn或error或fatal的情況。因為這都是可能是問題出現的地方。出現一個問題,不解決,可能就會影響接下來的測試。這才是真正的工作量。
1、啟動zookeeper
在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5上zookeeper目錄下分別執行命令:bin/zkServer.sh start
在每一臺機器執行完上面的命令後,執行jps,會顯示:這是初步認定啟動沒有問題
23598 Jps
22491 QuorumPeerMain
當所有機器執行上述命令完畢後,再在每臺機器上執行:bin/zkServer.sh status 檢視每臺機器zookeeper的狀態,正確的話,只有一臺機器是leader,其餘機器都是顯示
[email protected]:~yarn/hadoop2.2.0/app/zookeeper/bin$ ./zkServer.sh status
JMX enabled by default
Using config: /home/ericsson/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[email protected]:~yarn/hadoop2.2.0/app/zookeeper/bin$
2、驗證格式化zookeeper
2.1執行zkCli.sh
在hadoop1機器上,hadoop目錄,執行zkCli.sh 終端上會輸出一連串的資訊。最後結束的資訊是
Welcome to ZooKeeper!
2014-04-08 16:44:40,028 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2014-04-08 16:44:40,033 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session
JLine support is enabled
2014-04-08 16:44:40,094 [myid:] - INFO [main-SendThread(localhost:2181):[email protected]] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x145407bbc720004, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1]
[zk: localhost:2181(CONNECTED) 1]
【可以看到ZK叢集 中只有一個節點zookeeper】
2.2 格式化ZooKeeper叢集
格式化zookeeper叢集,目的是在ZooKeeper叢集上建立HA的相應節點。
在hadoop1上的hadoop的目錄執行:bin/hdfs zkfc –formatZK
正常命令輸出結尾:
14/04/08 17:03:40 INFO ha.ActiveStandbyElector: Session connected.
14/04/08 17:03:40 INFO zookeeper.ZooKeeper: Session: 0x545407c1d6c0003 closed
14/04/08 17:03:40 INFO zookeeper.ClientCnxn: EventThread shut down
如果終端輸出是以上面結尾,應該是沒有出現問題。
而我在執行的時候,遇到一個問題:在出現上面類似程式碼之後,報了一個異常,導致後面的執行沒有結果,問題就出在這個異常的之上。
終端輸出:
14/04/08 17:03:40 INFO ha.ActiveStandbyElector: Session connected.
14/04/08 17:03:40 INFO zookeeper.ZooKeeper: Session: 0x545407c1d6c0003 closed
14/04/08 17:03:40 INFO zookeeper.ClientCnxn: EventThread shut down
Exception in thread "main" org.apache.hadoop.HadoopIllegalArgumentException: Bad argument: –formatZK
at org.apache.hadoop.ha.ZKFailoverController.badArg(ZKFailoverController.java:245)
at org.apache.hadoop.ha.ZKFailoverController.doRun(ZKFailoverController.java:208)
at org.apache.hadoop.ha.ZKFailoverController.access$000(ZKFailoverController.java:59)
at org.apache.hadoop.ha.ZKFailoverController$1.run(ZKFailoverController.java:166)
at org.apache.hadoop.ha.ZKFailoverController$1.run(ZKFailoverController.java:162)
at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:456)
at org.apache.hadoop.ha.ZKFailoverController.run(ZKFailoverController.java:162)
at org.apache.hadoop.hdfs.tools.DFSZKFailoverController.main(DFSZKFailoverController.java:175)
就是上面的異常,沒有解決,導致下面的問題都不能進行,因為下面要在執行zkCli.sh,檢視zookeeper有沒有格式化成功,生成叢集名稱。自己也諮詢了幾個老師,他們給的回覆也是不知所云。自己在這上面,也是耽誤了很長時間,不知道到底問題出現在哪兒。其中有一個回覆是:可能是 -formatZK宣告有問題。字面解釋是這樣,但是formatZK的宣告是沒有問題。耽誤了幾天,在網上得到一個解決方案。Zookeeper日誌的問題,因為zookeeper是不能自動清理日誌的。因為事先,我在裝zookeeper的時候,裝過兩次,但是對應的data和log目錄資料沒有更改,導致在執行formatZK命令的時候報錯。
我把log日誌刪除掉,重新建立一個檔案,最後問題解決。因為這個原因,自己也查了關於zookeeper的相關資訊。這裡只談到zookeeper日誌的問題,後續的話,我們更多的去談zookeeper的相關內容。因為zookeeper的架構理念很重要。
在使用zookeeper過程中,我們知道,會有data和Log兩個目錄,分別用於snapshot和事務日誌的輸出(預設情況下只有data目錄,snapshot和事務日誌都儲存在這個目錄中,關於這兩個目錄的詳細說明,請看《ZooKeeper管理員指南》)。
正常執行過程中,ZK會不斷地把快照資料和事務日誌輸出到這兩個目錄,並且如果沒有人為操作的話,ZK自己是不會清理這些檔案的,需要管理員來清理,這裡介紹4種清理日誌的方法。在這4種方法中,推薦使用第一種方法,對於運維人員來說,將日誌清理工作獨立出來,便於統一管理也更可控。畢竟zk自帶的一些工 具並不怎麼給力,這裡是社群反映的兩個問題:這裡可以參考:ZooKeepr日誌清理 的4種方法:這裡不多介紹。
驗證:
執行:zkCli.sh
輸出和上面執行zkCli.sh輸出的內容相似。如果輸出下面內容,則證明格式化zookeeper成功,否則就出現問題:
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
ls /
[hadoop-ha,zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /hadoop-ha
[cluster1]
[zk: localhost:2181(CONNECTED) 2]
3、啟動JournalNode叢集
在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5上分別hadoop目錄
執行命令:sbin/hadoop-daemon.sh start journalnode
命令輸出(以hadoop1為例):
[[email protected] ~yarn/hadoop-2.2.0/]$ sbin/hadoop-daemon.sh start journalnode
starting journalnode, logging to yarn/hadoop-2.2.0/logs/hadoop-root-journalnode-hadoop101.out
[[email protected] ~yarn/hadoop-2.2.0/]$
在每個節點執行完啟動命令後,每個節點都執行以下驗證。
驗證(以hadoop1為例):
[[email protected] hadoop]$ jps
23396 JournalNode
23598 Jps
22491 QuorumPeerMain
[[email protected] hadoop]$
檢視一下目錄結構:
[[email protected] ~yarn/yarn_data/]$ pwd
/home/tom/yarn/yarn_data
[[email protected] ~yarn/yarn_data/]$ ls tmp/
journal
[[email protected] ~yarn/yarn_data/]$
【啟動JournalNode後,會在本地磁碟產生一個目錄,使用者儲存NameNode的edits檔案的資料】
4、格式化叢集的一個NameNode
從hadoop1和hadoop2中任選一個即可,這裡選擇的是hadoop1
在hadoop1上/home/tom/yarn/hadoop-2.2.0/目錄下執行下面命令:
bin/hdfs namenode -format -clusterId c1
命令輸出:
14/04/08 17:39:40 INFO namenode.FSImage: Image file /usr/local/hadoop/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 196 bytes saved in 0 seconds.
14/04/08 17:39:40 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
14/04/08 17:39:40 INFO util.ExitUtil: Exiting with status 0
14/04/08 17:39:40 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop1/172.16.128.134
************************************************************/
[[email protected] ~yarn/hadoop-2.2.0/]$
驗證檢視一下目錄結構:
[[email protected] ~yarn/yarn_data]$ pwd
/home/tom/yarn/yarn_data
[[email protected] ~yarn/yarn_data]$ ls tmp/
dfs journal
[[email protected] ~yarn/yarn_data]$ls dfs/
name
【格式化NameNode會在磁碟產生一個目錄,用於儲存NameNode的fsimage、edits等檔案】
出現上面內容,則認為,格式化namenode成功。
5、啟動剛才格式化的namenode
在hadoop1上/home/tom/yarn/hadoop-2.2.0/目錄下執行命令:/sbin/hadoop-daemon.sh start namenode
命令輸出:
[[email protected] ~yarn/hadoop-2.2.0]$ sbin/hadoop-daemon.sh start namenode
starting namenode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-namenode-hadoop101.out
驗證:
[[email protected] ~yarn/hadoop-2.2.0/]$ jps
23396 JournalNode
23598 Jps
23558 NameNode
22491 QuorumPeerMain
[[email protected] ~yarn/hadoop-2.2.0/]$
在頁面輸入地址:hadoop1:50070/dfshealth.jsp,你可以在頁面看到namenode1的狀態,是standby。
6、把NameNode1的資料從hadoop1同步到hadoop2中
在hadoop2上home/tom/yarn/hadoop-2.2.0/目錄上
執行命令:
bin/hdfs namenode –bootstrapStandby
命令輸出:
[[email protected] ~yarn/hadoop-2.2.0]$bin/hdfs namenode -bootstrapStandby
14/04/08 17:49:20 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
........
14/04/08 17:49:20 INFO util.ExitUtil: Exiting with status 0
14/04/08 17:49:20 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop2/172.16.128.135
************************************************************/
[[email protected] ~yarn/hadoop-2.2.0]$
驗證:
[[email protected] ~yarn/yarn_data]$ pwd
/home/tom/yarn/yarn_data
[[email protected] ~yarn/yarn_data]$ ls tmp/
dfs journal
[[email protected] ~yarn/yarn_data]$ls dfs/
name
【在tmp目錄下產生一個目錄name】
如果出現上面結果,證明資料從namenode1上同步到namenode2上是成功的。如果可以出現上面結果,繼續下面的步驟。如果沒有出現dfs目錄,也同樣執行下面的過程,不過兩者產生的結果不一樣。
7、啟動hadoop2中另一個Namenode
在hadoop2上/home/tom/yarn/hadoop-2.2.0/目錄下執行命令:/sbin/hadoop-daemon.sh start namenode
命令輸出:
[[email protected] ~yarn/hadoop-2.2.0]$ sbin/hadoop-daemon.sh start namenode
starting namenode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-namenode-hadoop101.out
驗證:
[[email protected] ~yarn/hadoop-2.2.0/]$ jps
2336 JournalNode
2358 Jps
2358 NameNode
2241 QuorumPeerMain
[[email protected] ~yarn/hadoop-2.2.0/]$
在頁面地址輸入:hadoop2:50070/dfshealth.jsp你就可以看到namenode2的狀態效果。和namenode1一樣,同樣是standby狀態。
不好的事情,我測試的過程就沒有出現上面的結果,namenode程序沒有啟動。這個問題,也是卡在那兒不得已解決,耽誤很長時間。問題,就出現在6、7兩個步驟上。不知道怎麼解決,後來諮詢一個哥們,那哥們把在
上給我截了一個圖,我仔細看了關於第6步的過程。其實就是為了把namenode1上格式化產生的目錄,拷貝到namenode2中,既然執行6沒有出現我想要的結果。那就直接把namenode1中目中的dfs目錄直接複製到namenode2中不就OK了嗎?事實證明正式如此,官網也是這麼說明的。複製完畢,再在namenode2上執行第7步,jps就可以看到namenode起來的程序了。至此這個問題解決了。
8、啟動所有的datanode
Datanode是在slaves檔案中配置的。在hadoop1上執行:
sbin/hadoop-daemons.sh start datanode
命令輸出:
[[email protected] ~yarn/hadoop-2.2.0]$sbin/hadoop-daemons.sh start datanode
hadoop3: starting datanode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-datanode-hadoop3.out
hadoop4: starting datanode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-datanode-hadoop4.out
hadoop5: starting datanode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-datanode-hadoop5.out
hadoop6: starting datanode, logging to /home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-datanode-hadoop6.out
[[email protected] ~yarn/hadoop-2.2.0]$
【上述命令會在四個節點分別啟動DataNode程序】
驗證(以hadoop1為例):
[[email protected] ~yarn/hadoop-2.2.0]$ jps
23396 JournalNode
24302 Jps
23558 NameNode
22491 QuorumPeerMain
[[email protected] ~yarn/hadoop-2.2.0]$
【可以看到java程序DataNode,這個時候可以ssh進入datanode機器,jps,檢視datanode是否啟動程序,這裡的3-6節點,datanode都是可以起來的】
9、啟動Yarn
在hadoop1上執行命令:sbin/start-yarn.sh
命令輸出:
[[email protected] ~yarn/hadoop-2.2.0]$sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-resourcemanager-hadoop1.out
Hadoop6: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop6.out
hadoop5: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop5.out
hadoop4: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop4.out
hadoop3: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop3.out
hadoop2: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop2.out
hadoop1: starting nodemanager, logging to /home/tom/yarn/hadoop-2.2.0/logs/yarn-root-nodemanager-hadoop1.out
[[email protected] ~yarn/hadoop-2.2.0]$
驗證:
[[email protected] ~yarn/hadoop-2.2.0]$jps
23396 JournalNode
25154 ResourceManager
25247 NodeManager
23558 NameNode
22491 QuorumPeerMain
25281 Jps
[[email protected] ~yarn/hadoop-2.2.0]$
【產生java程序ResourceManager和NodeManager】
也可以通過瀏覽器訪問hadoop1:8088/cluster
10、啟動ZooKeeperFailoverCotroller
在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5、hadoop6上分別執行命令: sbin/hadoop-daemon.sh start zkfc
命令輸出(以hadoop1為例):
[[email protected] ~yarn/hadoop-2.2.0]$ sbin/hadoop-daemon.sh start zkfc
starting zkfc, logging to 、home/tom/yarn/hadoop-2.2.0/logs/hadoop-root-zkfc-hadoop101.out
[[email protected] ~yarn/hadoop-2.2.0]$驗證(以hadoop1為例):
[[email protected] ~yarn/hadoop-2.2.0]$ jps
24599 DFSZKFailoverController
23396 JournalNode
24232 DataNode
23558 NameNode
22491 QuorumPeerMain
24654 Jps
[[email protected] ~yarn/hadoop-2.2.0]$
【產生java程序DFSZKFailoverController】
11、驗證HA的故障自動轉移是否好用
在執行完第10步的時候,在頁面可以觀察到兩個NameNode的狀態,hadoop1的狀態是standby,hadoop2的狀態是active。原先兩個namenode都是standby的狀態。
在hadoop1上我們執行:kill -9 23558
23558 NameNode
然後jps:nemenode程序不存在了
[[email protected] ~yarn/hadoop-2.2.0]$ jps
24599 DFSZKFailoverController
23396 JournalNode
24232 DataNode
22491 QuorumPeerMain
24654 Jps
然後重新整理兩個頁面,可以看到,兩臺機器的狀態置換了。原先的active變成standby,原先的standby變成active,這說明,HA故障自動轉換是正常的,HDFS是高可用的。
等你順利結束上面所有的步驟,都很順利的話,說明,你叢集搭建基本完成任務。說是基本,因為還有事情要做,就是,你要開始上傳檔案開始測試程式,看看hadoop是否應用正常。這就是接下來要做的事情了。
總結:
整個過程是,痛苦、無奈、糾結。伴隨著N多夜晚。總結的過程就超過10個小時。還有很多問題都沒有寫完,後續會繼續跟近,也歡迎與讀者討論交談。
讀者有益,寫著有勞。關愛身邊每一個人,熱愛身體,珍惜生命,且行且珍惜。
Copyright©BUAA
相關推薦
hadoop學習(九)Hadoop2.2.0+HA+zookeeper3.4.5詳細配置過程+錯誤處理(2)
Hadoop2.2.0+HA+zookeeper3.4.5詳細配置過程+體系結構+錯誤處理(2) 這篇文章,主要是針對zookeeper和hadoop叢集的整體測試,以及自己在實際過程遇到的問題和解決思路。 如有轉載,
機器學習與深度學習系列連載: 第一部分 機器學習(九)支援向量機2(Support Vector Machine)
另一種視角定義SVM:hinge Loss +kennel trick SVM 可以理解為就是hingle Loss和kernel 的組合 1. hinge Loss 還是讓我們回到二分類的問題,為了方便起見,我們y=1 看做是一類,y=-1 看做是另一類
JavaWeb學習(九)HttpServletRequest基本應用——客戶端提交表單到伺服器(2)
一、獲得客戶機請求引數(客戶端提交的資料) getParameter(String)方法(常用) getParameterValues(String name)方法(常用) getParameterNames()方法(不常用) getParameterMap()方法(編寫
【數據庫】9.0 MySQL入門學習(九)——獲得數據庫和表的信息、日期計算、查詢
編輯 輸入 3.0 dog tro ron 學習 後來 spec 1.0 SELECT語句用來從數據表中檢索信息。 SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to_s
C++學習(九)入門篇——String類
允許 res fort ngs 結果 初始化 ant content app 可以用string類而不是字符數組來存儲字符串,string更加簡單 要是用string類,則要在程序中包含頭文件string,且位於std名稱空間中,string類隱藏了字符串的數組性質,可以像
linux學習(九)set_uid、set_gid、stick_bit、軟鏈接、硬鏈接
private char 就是 bug spec deb date scrip usr 一、set_uid set_uid其實是一種特殊權限,我們看一個文件: [root@iZ25lzba47vZ ~]# ls -l /usr/bin/passwd -rwsr-xr-x.
Hadoop學習(一)搭建Hadoop的分布式集群
例子程序 eve work 鍵盤 規劃 shuffle 系統變量 p s har 搭建Hadoop的分布式集群 Hadoop集群搭建的準備操作: 1、準備四臺服務器 四臺服務器的主機名分別是:potter2、potter3、potter4、potter5。 對以上四
React Native學習(九)—— 使用Flexbox布局
styles BE art 分享圖片 category urn def ger p s 本文基於React Native 0.52 Demo上傳到Git了,有需要可以看看,寫了新內容會上傳的。Git地址 https://github.com/gingerJY/React-N
Hadoop學習(1)
分布 ont zookeepe str 過程 pac 穩定版 進行 動態 什麽是Hadoop? hadoop是Apache 開源發布的分布式系統基礎架構。它實現了分布式文件系統(hadoop Distributed File System,HDFS),分布式系統是運行在多個
機器學習(九)—邏輯回歸與SVM區別
ongl 需要 自帶 www. 不理解 就是 clas 決策 技術 1、LR和SVM有什麽相同點 (1)都是監督分類算法; (2)如果不考慮核函數,LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的; (3)LR和SVM都是判別模型。 2、LR和S
C++學習(九)之 項目 推箱子遊戲
bgm 控制臺 兩個 分享 加載圖片 eat gethwnd put init 遊戲制作 推箱子 步驟分析 1、模板 2、模板分析 組成元素: 空地 墻 人 目的地 箱子 背景 3、如何操作 通過WASD鍵盤操作人,推著箱子,到達目
操作系統學習(九) 、訪問數據段時的特權級檢查
區域 系統 才會 使用 執行 有效 以及 選擇 改變 為了訪問數據段中的操作數,數據段的段選擇符必須被加載進數據段寄存器(DS,ES,FS或GS)或堆棧段寄存器(SS)中。可以使用指令MOV、POP、LDS、LES、LFS、lGS和LSS來加載段寄存器。 在把一個段選擇符加
C++語言學習(九)——C++標準庫簡介
模塊使用 sse libstdc++ 約定 ngs 列表 oss 雜項 pri C++語言學習(九)——C++標準庫簡介 一、C++標準庫簡介 1、C++標準庫簡介 C++標準庫(C++ Standard Library),是類庫和函數的集合。?C++編譯器廠商根據C++標
Hadoop學習(一)
電腦 yarn bubuko 調度 node common mon ima mage Common:公共模塊,別的模塊都依賴於它。 HDFS:存儲數據。 MapReduce:計算數據. YARN:調度器。輔助把資源分給哪臺電腦。 Namenode:負責接收客戶端的請求
強化學習(九)與Deep Q-Learning進階之Nature DQN
cal variable 模型 基礎 討論 比較 .com 回放 均方差 在強化學習(八)價值函數的近似表示與Deep Q-Learning中,我們講到了Deep Q-Learning(NIPS 2013)的算法和代碼,在這個算法基礎上,有很多Deep Q-Lear
機器學習之numpy和matplotlib學習(九)
這節課我們來學習numpy的一些基本的操作和屬性。 為什麼這樣安排學習課程呢? 我覺得這樣交叉學習,使用到什麼的時候就去檢視,對於numpy也好還是matplotlib的學習也好。 他們的內容有很多,要想全部掌握還是很難的,只有不斷的自己去實踐,遇到什麼不知道的問題就去學習。 而
java分散式系統部署學習(九)ansible-playbook進階
一、併發執行 ansible預設只會建立5個程序,所以一次任務只能同時控制5臺機器執行.那如果你有大量的機器需要控制,或者你希望減少程序數,那你可以採取非同步執行.ansible的模組可以把task放進後臺,然後輪詢它.這使得在一定程序數下能讓大量需要的機器同時運作起來. 使用asy
JMeter學習(九)FTP測試計劃
FTP服務主要提供上傳和下載功能。有時間需要我們測試伺服器上傳和下載的效能。在這裡我通過JMeter做一個FTP測試計劃的例子。 1.建立一個執行緒組 2.執行緒組--->新增--->配置元件--->FTP請求預設值:輸入伺服器名稱或IP。 3.
機器學習與深度學習系列連載: 第二部分 深度學習(九)Keras- “hello world” of deep learning
Keras Kearas 是深度學習小白程式碼入門的最佳工具之一。 如果想提升、練習程式碼能力,還是建議演算法徒手python實現。 複雜的深度神經網路專案還是推薦TensorFlow或者Pytorch Keras是一個高層神經網路API,Keras由純Pyt
pandas_cookbook學習(九)——apply
Apply應用函式: In [135]: df = pd.DataFrame(data={'A' : [[2,4,8,16],[100,200],[10,20,30]], 'B' : [['a','b','c'],['jj','kk'],['ccc']]},index=['I','I