Hbase The HBase • HBase is a distributed columnoriented database built on top of HDFS. – Easy to scale to demand • HBase is the Hadoop application to use when you require real-time read/write random-access to very large datasets. – Use MapReduce to search • HBase depends on ZooKeeper and by default it manages a ZooKeeper instance as the authority on cluster state. Data Model • A data model similar to Bigtable. – a data row has a sortable row key and an arbitrary number of columns – the table is stored sparsely, rows in the same table can have widely varying numbers of columns Conceptual View Physical Storage View Example • Capture network packets into HDFS, save to a file for every minute. • Run MapReduce app, estimate flow status. – count tcp, udp, icmp packet number – compute tcp, udp, or all packet flow • The result save to HBase. – row key and timestamp are the captrue time Row-key Timesta mp Tcp:count Tcp:flow Udp:coun Udp:flow t … 2001003 291011 1269852 90000 2423432 7989010 927 387897 8991645 466 … 2010032 91012 1269852 96000 2899787 1093999 3009 481241 8163769 889 … … … … … … … … Display • Specify start time and stop time to scan table then estimate data and display as flow graph. • Sample output The performance of accessing files to HDFS directly and through a HDFS-based FTP server Accessing files to HDFS directly (1/7) • ssh登入namenode下達指令 – 上傳檔案至HDFS: • hadoop fs -Ddfs.block.size=資料區塊位元組數 Ddfs.replication=資料區塊複製數量 -put 本機資料 HDFS檔案目錄 – 由HDFS下載檔案: • hadoop fs -get HDFS上的資料 本機目錄 Accessing files to HDFS directly (2/7) • 觀察透過HDFS參數的調整,讓HDFS在不 同條件下的檔案讀取效能。之後的標題中 若標示R=1,表示某檔案在HDFS中的複製 (備份)數量。 Accessing files to HDFS directly (3/7, R=1) 1M 2M 4M 8M 16M 32M 64M 128M 256M 512M MB級(100MB) GB級(3.3GB) 4 120.5 3.7 103.2 3.4 93.5 3.2 81.7 2.7 84.8 2.5 65.9 1.8 65.1 1.9 51.6 1.9 62.7 1.9 77 (橫軸表示資料分割區塊大小,單位:byte) (縱軸表示一份資料完全寫入HDFS所需要的時間, 單位:秒) Accessing files to HDFS directly (4/7, R=1) 1M 2M 4M 8M 16M 32M 64M 128M 256M 512M MB級(100MB) GB級(3.3GB) 2.3 61.5 2.2 63 2.1 62.4 2.1 61.8 2.1 61.7 2.1 62.2 2.1 60.1 2 61.8 2 63.1 2 62.1 (橫軸表示資料分割區塊大小,單位:byte) (縱軸表示一份資料完全從HDFS讀出所需要的時間,單位:秒) Accessing files to HDFS directly (5/7, R=2) 1M 2M 4M 8M 16M 32M 64M 128M 256M 512M MB級(100MB) GB級(3.3GB) 3.8 224.5 3.4 190.1 3.2 147 3 131.2 2.8 133.5 3.1 124.9 3.2 118.7 3.2 120.5 3.3 143.3 3.3 124.9 (橫軸表示資料分割區塊大小,單位:byte) (縱軸表示一份資料完全寫入HDFS所需要的時間,單位:秒) Accessing files to HDFS directly (6/7, R=2) 1M 2M 4M 8M 16M 32M 64M 128M 256M 512M MB級(100MB) GB級(3.3GB) 2.3 63.4 2.3 61.5 2.2 61.5 2.1 60.1 2 60 2.1 58.4 1.9 58 2.1 61.7 2 61.5 2 58.5 (橫軸表示資料分割區塊大小,單位:byte) (縱軸表示一份資料完全從HDFS讀出所需要的時間,單位:秒) Accessing files to HDFS directly (7/7) • 結論 – 在運行NameNode daemon的namenode server上直接上下載檔案,原則上資料區塊大 小以64MB或128MB效能較佳。 – 資料區塊複製數越多,雖在檔案寫入時會花較 久的時間,但在檔案讀取時速度會些許提升。 Accessing files through a HDFSbased FTP server(1/3) • 使用者用FTP client連上FTP server後 – lfs表示一般的FTP server daemon直接存取 local file system。 – HDFS表示由我們撰寫的FTP server daemon, 透過與位在同一台server上的NameNode daemon溝通後,存取HDFS。 • 之後上傳/下載完檔案花費之總秒數皆為 測量3次秒數平均後之結果 • 網路頻寬約維持在10Mb/s~12Mb/s間 Accessing files through a HDFSbased FTP server(2/3) (橫軸:上傳單一檔案GB數) (縱軸:上傳完檔案花費總秒數) (HDFS:檔案區塊大小128MB,複製數=2) lfs HDFS 0.5GB 46.33 62.33 1.0GB 95 138.67 1.5GB 141.67 199 2.0GB 188.67 270 2.5GB 237 346 3.0GB 288.33 400 3.5GB 345 471 4.0GB 383.67 472 Accessing files through a HDFSbased FTP server(3/3) (橫軸:下載單一檔案GB數) (縱軸:下載完檔案花費總秒數) (HDFS:檔案區塊大小128MB,複製數=2) lfs HDFS 0.5GB 48 45 1.0GB 92 91 1.5GB 141 137.33 2.0GB 192 185.67 2.5GB 236.67 226.33 3.0GB 273.33 278 3.5GB 322 320.33 4.0GB 380.33 378.67 Hadoop認證分析 • the name node has no notion of the identity of the real user。(沒有真實用戶的概念) • User Identity : – The user name is the equivalent of「whoami」. – The group list is the equivalent of「bash -c groups」. • The super-user is the user with the same identity as name node process itself. If you started the name node, then you are the super-user. Why Using Proxy to connect name node • DataNodes do not enforce any access control on accesses to its data blocks。(client可與datanode 直接連線,提供Block ID即可read、write)。 • Hadoop client(any user)can access HDFS or submit Mapreduce Job。 • Hadoop only works with SOCKS v5. ( in client, ClientProtocol and SubmissionProtocol ) • 結論:hadoop(Private IP叢集)+ RADIUS + SOCKS proxy。 結構 結構 Hadoop SOCKS • 只需在Hadoop client設定SOCKS連線,Namenode無需設定。 User 認證 • 使用SOCKS protocol的method(username、 password)辨識Proxy transfer的權限。 • 由RADIUS Server紀錄user是否可以存取hadoop。 (user-group) • User使用Hadoop client(whoami)的執行身分來存取 Hadoop。 SOCKS Proxy 優缺點 • 優點: – 可進行user認證。 – 可過濾IP range,限制使用proxy的網域。 – 不會儲存transfer的封包, 單純forward。 • 缺點: – Client 端需支援 SOCKS protocol。 – 可能會成為Bottleneck,傳輸速度(transfer)與硬體和選用 的SOCKS軟體有關。