SlideShare a Scribd company logo
1 of 92
Hệ thống tính toán
và dữ liệu lớn
NGUYỄN VĂN THÀNH
Big Data
Apache Hadoop
HDFS
MapReduce
HBase
Hive
2
Big Data
3
Big Data là gì? 4
Định nghĩa Big Data
 Tập hợp dữ liệu có dung lượng khổng lồ
 Các công cụ ứng dụng xử lý dữ liệu truyền thống không thể đảm đương
được
5
Định nghĩa Big Data
 Kích thước của Big Data đang ngày một tăng
6
Tính chất của Big Data
Big
Data
Velocity
VarietyVolume
7
Một vài ví dụ Big Data
 Dữ liệu từ các thí nghiệm của máy gia tốc hạt lớn ở châu Âu
 Dữ liệu từ các trạm quan sát vũ trụ
 Dữ liệu từ công tác giải mã gen di truyền của con người
 Dữ liệu sinh ra bởi mạng xã hội (Facebook, Twitter, Google Plus.v.v..)
8
Tình hình Big Data hiện nay
 Theo tài liệu của Intel vào tháng 9/2013, hiện nay thế giới đang tạo ra 1
petabyte dữ liệu trong mỗi 11 giây và nó tương đương với một đoạn video
HD dài 13 năm.
9
Tình hình Big Data hiện nay 10
40 PB 24,7 TB
50 tỉ bức ảnh Dữ liệu truy
vấn, media..
Lợi ích của Big Data 11
“Vấn đề thật sự không nằm ở việc bạn thu thập dữ liệu,
thay vào đó, là bạn dùng Big Data để làm gì”
Lợi ích của Big Data
Một số lợi ích mà Big Data có thể mang lại:
 cắt giảm chi phí
 tiết kiệm thời gian và giúp tối ưu hoá sản phẩm
 đồng thời hỗ trợ con người đưa ra những quyết định đúng và hợp lý hơn.
12
Theo Oracle, việc phân tích Big Data và những dữ liệu dung lượng lớn đã giúp các tổ chức
kiếm được 10,66$ cho mỗi 1$ chi phí phân tích, tức là gấp 10 lần
Đối với các doanh nghiệp TMĐT, thu thập và nghiên cứu thông tin về sở thích, thói quen của
khách hàng sẽ giúp bán được nhiều hàng hơn nhờ việc đưa ra các chiến lược kinh doanh hiệu
quả, tăng trải nghiệm mua sắm của người dùng.
Xa hơi một chút, ứng dụng được Big Data có thể giúp các tổ chức, chính phủ dự đoán được tỉ
lệ thất nghiệp, xu hướng nghề nghiệp của tương lai để đầu tư cho những hạng mục đó, hoặc
cắt giảm chi tiêu, kích thích tăng trưởng kinh tế, v/v...
Các công nghệ khai thác Big Data
Big Data cần đến các kĩ thuật khai thác thông tin rất đặc biệt do tính chất
khổng lồ và phức tạp của nó.
13
crowsourcing (tận dụng nguồn lực từ
nhiều thiết bị điện toán trên toàn cầu để
cùng nhau xử lí dữ liệu
Các biện pháp machine learning, xử lý ngôn ngữ tự nhiên, xử lí tín hiệu, mô phỏng…
Các công nghệ khai thác Big Data
Ngoài ra, các cơ sở dữ liệu hỗ trợ xử lí dữ liệu song song, ứng dụng hoạt
động dựa trên hoạt động tìm kiếm, file system dạng rời rạc, NoSQL, Data
Warehouse, các hệ thống điện toán đám mây (bao gồm ứng dụng, nguồn lực
tính toán cũng như không gian lưu trữ) và bản thân Internet cũng là những
công cụ đắc lực phục vụ cho công tác nghiên cứu và trích xuất thông tin từ
Big Data
14
Tương lai của Big Data 15
 Việc tiêu thụ một lượng dữ liệu lớn sẽ dần phổ biến hơn với mọi người, từ những người
nông dân cho đến các anh kĩ sư
 Các công ty chuyên cung cấp giải pháp Big Data sẽ mở rộng nó và áp dụng Big Data nhằm
giải quyết những vấn đề trong đời thường và trả lời cho các nhu cầu cơ bản của con người
Apache Hadoop
16
17
“Hadoop is Swiss army knife of 21st Century”
Giới thiệu Apache Hadoop
“Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán
có cường độ dữ liệu lớn một cách miễn phí. Nó cho phép các ứng dụng có thể làm việc với hàng
ngàn node khác nhau và hàng petabyte dữ liệu. Hadoop lấy được phát triển dựa trên ý tưởng từ
các công bố của Google về mô hình MapReduce và hệ thống file phân tán Google File System
(GFS).”
18
Lịch sử Hadoop 19
Hadoop và Big Data
 Hadoop đơn giản hoá việc thực hiện các yêu cầu xử lý dữ liệu mạnh mẽ,
các ứng dụng phân tán mức cao
 Hadoop cung cấp cách thức tiết kiệm chi phí cho việc lưu trữ lượng lớn dữ
liệu trên cụm các máy tính phần cứng chi phí thấp
 Có sự khác biệt với cách phương pháp phân tán khác
 Cung cấp cơ chế mạnh mẽ cho phân tích dữ liệu
 Lưu trữ số lượng lớn
 Xử lý phân tán và truy cập dữ liệu nhanh chóng
 Tin cậy, chống chịu lỗi và khả mở
20
Hadoop và Big Data 21
Hệ sinh thái Hadoop
 Apache Hadoop nguồn gốc là để quản lý và truy cập dữ liệu, và chỉ bao
gồm 2 thành phần là: Hadoop Distributed File System (HDFS) và
MapReduce.
22
Hệ sinh thái Hadoop
 Theo thời gian, Hadoop được kết hợp với 1 loạt các dự án khác để trở
thành một nền tảng hoàn chỉnh cho BigData
23
Hệ sinh thái Hadoop
 Hiện nay có rất nhiều nhà cung cấp đóng gói và hỗ trợ Hadoop cho việc khai thác
và lưu trữ Big Data (Hadoop distributions and commercial support)
24
Lợi ích của Hadoop 25
Khả năng mở rộng
Mở rộng lên tới hàng nghìn
node trên 1 cluster
Tiết kiệm chi phí
Phần cứng giá rẻ, phần
mềm mã nguồn mở
Linh hoạt
Linh hoạt trong phân tích
và khai thác dữ liệu
Kiến trúc Hadoop 26
Với 2 thành phần core là HDFS và MapReduce,
Hadoop 1.0 đã rất thành công trong việc đáp ứng
khả năng lưu trữ và xử lý phân tán cũng như khả
năng mở rộng (khoảng 4000 node trên 1 Hadoop
cluster)
Kiến trúc Hadoop
Tuy nhiên Hadoop 1.0 vẫn còn tồn tại một số nhược điểm:
 Không có khả năng mở rộng chiều ngang cho NameNode (1 thành phần
quan trọng của HDFS)
 Không hỗ trợ tính sẵn sàng cao cho NameNode
 Sự quá tải của JobTracker (1 thành phần điều phối hoạt động của
MapReduce)
 Không hỗ trợ các ứng dụng Non-MapReduce Big Data (Graph processing..)
 Không cho phép tích hợp các engine tính toán, khai thác dữ liệu khác nhau
 Chỉ chạy được trên Linux
27
Kiến trúc Hadoop 28
Tính năng mới của Hadoop 2.0:
 HDFS federation
 NameNode HA
 YARN: Data Operating System, quản lý tài nguyên
Hadoop cluster
 MapReduce 2.0
 Hỗ trợ chạy trên Windows
 Hỗ trợ chạy trên các nền tảng Cloud (OpenStack,
Windows Azure, Amazone, Google)
Các thành phần của YARN
 ResourceManager (RM):
 Chạy trên master node
 Quản lý lịch trình tài nguyên chung
 Điều phối tài nguyên giữa các ứng dụng
29
 Node Manager (NM):
 Chạy trên slave nodes
 Giao tiếp với RM
Các thành phần của YARN
 Containers
 Tạo bởi RM dựa trên request
 Cấp phát tài nguyên (memory, CPU) trên slave nodes
 Các ứng dụng có thể chạy trên một hoặc nhiều container
30
 Application Master (AM)
 1 ứng dụng có 1 AM
 Đặc tả về framework và ứng dụng
 Chạy trong một container
 Có thể yêu cầu them container để chạy các nhiệm vụ của ứng
dụng
YARN là chìa khoá của Hadoop 2
 Với các tính năng kể trên, YARN là kiến trúc trung tâm của Hadoop 2
 Cung cấp cơ chế quản lý tài nguyên hiệu quả, linh hoạt, bảo mật và thống
nhất các công cụ trên toàn Hadoop cluster
 YARN mở rộng Hadoop với những công nghệ mới giúp các Data center
quản lý được hiệu quả chi phí, mở rộng tuyến tính của lưu trữ và xử lý dữ
liệu
 YARN cung cấp cho các lập trinh viên một framework duy nhất để viết các
ứng dụng sử dụng dữ liệu trên Hadoop
31
YARN hoạt động như thế nào? 32
YARN hoạt động như thế nào? 33
YARN hoạt động như thế nào? 34
YARN hoạt động như thế nào? 35
YARN hoạt động như thế nào? 36
YARN hoạt động như thế nào? 37
Hadoop Big Data Platform 38
Hortonworks Data Platform 39
Người dùng Hadoop nổi bật
 Yahoo!:
 19/2/2008 Yahoo tuyên bố ứng dụng Hadoop lớn nhất thế giới với hơn 10.000
node cho 1 Hadoop cluster được sử dụng trong hệ thống tìm kiếm Yahoo
Webmap.
 Facebook:
 2010 Facebook tuyên bố sở hữu những Hadoop cluster lớn nhất thế giới với
21PB lưu trữ.
 13/06/2012 họ công bố dữ liệu đã tăng lên đến 100PB
 8/11/2012 các dữ liệu tập của Hadoop tại các kho dữ liệu tăng lên gần nửa PB
mỗi ngày
40
Hadoop HDFS
41
Giới thiệu HDFS
 Hadoop Distributed File System (HDFS): HDFS là một hệ thống tập tin phân
tán của Hadoop cung cấp khả năng tăng tuyến tính và lưu trữ dữ liệu đáng
tin cậy, được thiết kế để lưu trữ phân tán trên các cluster lớn mà có chi phí
thấp
42
Giới thiệu HDFS
 HDFS ra đời dựa trên nhu cầu lưu trữ dữ liệu của Nutch, một dự án Search
Engine nguồn mở
 HDFS ứng dụng kiến trúc của Google File System (GFS)
43
Google File System
Đặc trưng của HDFS
 Khả năng phát hiện lỗi, chống chịu lỗi
 Kích thước các file sẽ lớn hơn so với các chuẩn truyền thống, các file có
kích thước hàng GB sẽ trở nên phổ biến
 Chỉ append dữ liệu vào cuối file thay vì ghi đè
 Các thao tác đọc ngẫu nhiên không tồn tại
44
Kiến trúc HDFS 45
 HDFS duy trì một cấu trúc cây phân cấp các file, thư mục mà các file sẽ
đóng vai trò là các node lá.
 Mỗi file sẽ được chia ra làm một hay nhiều block và mỗi block này sẽ có
một block ID để nhận diện.
 Các block của cùng một file (trừ block cuối cùng) sẽ có cùng kích thước và
kích thước này được gọi là block size của file đó. Mỗi block của file
sẽ được lưu trữ thành ra nhiều bản sao (replica) khác nhau vì mục đích
an toàn dữ liệu
Kiến trúc HDFS
HDFS có kiến trúc master/slave:
 NameNode duy nhất cho toàn cluster: đóng vai trò master, duy trì chịu
trách nhiệm duy trì thông tin về cấu trúc cây phân cấp các file, thư mục
của hệ thống file và các metadata khác của hệ thống file:
 File System Namespace
 Thông tin để ánh xạ từ tên file ra thành danh sách các block
 Nơi lưu trữ các block
 NameNode có khả năng nhận biết cấu trúc topology của mạng để xác
định “khoảng cách” giữa 2 node trên Hadoop cluster
 Secondary NameNode có khả năng hoạt động ở chế độ standby, sẽ tự
động được active ngay khi NameNode gặp sự cố
46
Kiến trúc HDFS
 Các DataNode sẽ chịu trách nhiệm lưu trữ các block thật sự của từng file
của hệ thống file phân tán lên hệ thống file cục bộ của nó. Mỗi 1 block sẽ
được lưu trữ như là 1 file riêng biệt trên hệ thống file cục bộ của
DataNode.
 Định kỳ Datanode sẽ gửi thông điệp “heart beat” để thông báo cho NameNode
về tình trạng “live” và các bản sao blok đang sẵn sàng
47
Kiến trúc HDFS
 Định kỳ Datanode sẽ gửi thông điệp “heart beat” để thông báo cho
NameNode về tình trạng “live” và các bản sao blok đang sẵn sàng
48
Kiến trúc HDFS 49
Thao tác đọc trên HDFS 50
DataNod
e
DataNod
e
DataNod
e
Thao tác ghi trên HDFS 51
DataNod
e
DataNod
e
DataNod
e
Sự toàn vẹn dữ liệu
 HDFS sử dụng checksum để xác nhận dữ liệu (CRC32)
 Khi tạo tập tin
 Client tính checksum (512 byte)
 DataNode lưu trữ checksum
 Khi đọc tập tin
 Client tìm kiếm dữ liệu và checksum từ DataNode
 Nếu xác nhận fail, Client sẽ tiến hành đọc bản sao khác
52
Sao chép dữ liệu (Replication)
 HDFS sao chép ở mức block
 Có ba mức độ sao chép
 Cùng máy – Cùng rack – Khác rack
 NameNode phát hiện các DataNode có sự cố
 Chọn DataNode mới cho bản sao mới
 Cân bằng dung lượng sử dụng trên các đĩa
 Cân bằng lưu lượng băng thông với DataNode
53
Các giao diện tương tác với HDFS
 Giao diện commandline
 Giao diện java
 Giao diện web
54
Quản trị HDFS
 Permission: HDFS có một mô hình phân quyền tập tin và thư mục giống
với POSIX (Portable Operating System Interface [for Unix]). Có ba loại
quyền truy cập: quyền được phép đọc (r), quyền ghi (w), và quyền thực thi
(x)
 Trên Hadoop cũng có super-user, có quyền hạn toàn cục và không bị kiểm tra
quyền truy cập
 Quotas: HDFS cho phép người quản trị có thể thiết lập hạn ngạch (quotas)
cho số lượng tên (file/thư mục) sử dụng và dung lượng sử dụng cho các
thư mục. Có hai loại hạn ngạch là hạn ngạch tên (name quotas) và hạn
ngạch dung lượng (space quotas).
55
MapReduce
56
Giới thiệu MapReduce
 MapReduce là mô hình dùng cho xử lý tính toán song song và phân tán
trên hệ thống phân tán
 Mô hình này sẽ phân rã từ nghiệp vụ chính thành các công việc con để
chia từng công việc con này về các máy tính trong hệ thống thực hiện xử
lý một cách song song, sau đó thu thập lại các kết quả
 Hadoop MapReduce là một framework ứng dụng kiến trúc MapReduce
của Google công bố
57
Mô hình MapReduce
 Hàm Map
58
 Hàm Reduce
Một số khái niệm Hadoop MapReduce
 Job Tracker: Master MapReduce
 Tiếp nhận các yêu cầu thực thi MapReduce job
 Phân chia job thành các task và phân công cho các Task Tracker thực hiện
 Quản lý tình trạng thực hiện của Task Tracker
 Task Tracker:
 Tiếp nhận các task được Job Tracker phân công và thực hiện nó
59
Cơ chế hoạt động 60
Khả năng chịu lỗi của MapReduce
 JobTracker kiểm tra kết nối tới các TaskTracker theo chu kỳ
 Thực thi lại các lệnh map() và reduce() nếu xảy ra lỗi
 Nếu 1 TaskTracker nào gặp sự cố thì job sẽ được gán cho TaskTracker khác
 Nếu JobTracker phát hiện ra 2 lỗi trên cùng 1 record dữ liệu, thì sẽ bỏ qua
lỗi đó trong lần xử lý kế tiếp của TaskTracker.
61
Ưu điểm của Hadoop MapReduce
Dữ liệu được xử lý là locally (các thao tác được thực hiện ngay trên node chức
các block cần xử lý), vì vậy các Task Tracker sẽ không phải đi nạp dữ liệu từ các
máy tính khác -> Gia tang hiệu suất về mặt thời gian và băng thông
62
Nhược điểm của MapReduce
 Không reduce() nào được bắt đầu cho đến khi map() kết thúc
 Nếu map() fail bất kỳ lúc nào trước khi reduce() kết thúc thì toàn bộ lệnh
phải thực hiện lại
63
Phát triển ứng dụng MapReduce
 Trên thực tế, để triển khai mô hình ứng
dụng với MapReduce với các ngôn ngữ
(C/C++, Java..) chúng ta cần tới
MapReduce framework:
 Input reader
 Map function
 Partion function
 Compare function
 Reduce function
 Output writer
64
Ứng dụng MapReduce
 MapReduce không phải là mô hình áp dụng cho tất cả các vấn đề
 Một số trường hợp thích hợp với MapReduce:
 Dữ liệu cần xử lý lớn, kích thước tập tin lớn
 Các ứng dụng thực hiện xử lý, phân tích dữ liệu, thời gian xử lý đáng kể, có thể
tính bằng phút, giờ, ngày, tháng..
 Cần tối ưu hoá về băng thông trên cluster.
 Một số trường hợp có thể không phù hợp:
 Dữ liệu cần xử lý là tập hợp nhiều tập tin nhỏ.
 Cần tìm kiếm nhanh (tốc độ có ý nghĩa đến từng giây) trên tập dữ liệu lớn. Do
độ trễ khi xử lý các MapReduce Job và khởi tạo các task trên DataNode.
65
Ứng dụng MapReduce
 Apache Nutch, search engine mã nguồn mở đã sử dụng MapReduce làm
mô hinh để thực hiện các thao tác crawl dữ liệu
 Last.fm là một trang web hàng đầu về nghe nhạc sử dụng MapReduce để
thống kê các thông tin về các bài nhạc của mình
 Tại VN:
 Mwork sử dụng Hadoop để lưu trữ và xử lý Log
 Cốc cốc search engine sử dụng Hadoop phục vụ xử lý thao tác crawl
66
Apache HBase
67
NoSQL và Big Data
 NoSQL là viết tắt cho Not Relational SQL hay Not Only SQL. NoSQL dùng
SQL nhưng nó dùng nhiều hơn cả SQL để đạt được mục tiêu của mình
 NoSQL cung cấp một cơ chế cho việc lưu trữ và truy xuất dữ liệu sử dụng
mô hình thống nhất nới lỏng hơn so với cơ sở dữ liệu quan hệ truyền
thống
68
NoSQL và Big Data
 CSDL NoSQl chấp nhận sự đa dạng về cấu trúc dữ
liệu
 CSDL NoSQl có hiệu suất cao và tính sẵn sàng cao
 CSDL NoSQL không thể cung cấp 100% ACID
(Atomicity, Consistency, Isolation, Durability). Mặc
dù vậy, nó cung cấp sự thống nhất cuối cùng.
 NoSQL thuộc nhiều loại như: column store,
document store, key-value store, và graph
database.
 Column: Hbase, Cassandra, Accumulo
 Document: MongoDB, Couchbase, Raven
 Key-value: Dynamo, Riak, Azure, Redis, Cache, GT.m
 Graph: Neo4j, Allegro, Virtouso, Bigdata
69
Giới thiệu HBase
 HBase là 1 hệ cơ sở dữ liệu mã nguồn mở được xây dựng dựa trên
Google BigTable
 HBase cung cấp khả năng lưu trữ dữ liệu lớn lên tới hàng tỷ dòng, hàng
triệu cột khác nhau cũng như hàng petabytes dung lượng
 Hbase là 1 NoSQL điển hình
 HBase đang là 1 trong các top-level project của tổ chức Apache Software
Foundation và được cung cấp dưới giấy phép: Apache Lisence 2.0
70
Kiến trúc HBase 71
Kiến trúc HBase 72
Kiến trúc của HBase
Khi có yêu cầu đọc hoặc ghi:
 Client kết nối tới Zookeeper để tìm địa
chỉ của ROOT table.
 Client sử dụng ROOT Table để tìm ra địa
chỉ của META table chứa thông tin của
region mà nó cần tìm.
 Client sử dụng META table để tìm kiếm
thông tin của region mà nó cần tìm
 Client tương tác trực tiếp với
RegionServer
73
Mô hình dữ liệu của HBase
 Hbase được xây dựng dựa trên thiết kế của Google BigTable nên có nhiều
điểm giống
 Dữ liệu được lưu trong 1 table của HBase được xác định bởi các khóa:
“Table, Rowkey, Column Families, Column, Timestamp”
74
Mô hình dữ liệu của HBase
 Mỗi table bao gồm rất nhiều row, có
thể lên tới hàng tỷ rows trong 1 table
của HBase, các row được xác định với
nhau bởi 1 khóa duy nhất “rowkey”,
rowkey trong HBase có chức năng
tương tự với Primary key trong các hệ
cơ sở dữ liệu thông thường .Các row
trong cùng 1 talbe luôn được sắp xếp
theo thứ tự tự điển theo rowkey.
 Mỗi row gồm nhiều column khác nhau,
các column gộp lại thành “column
families”. Các column trong 1 column
families được lưu trữ trong Hfile
75
Mô hình dữ liệu của HBase
 1 column của Hbase được khai báo dưới dạng:”families:
qualifier”, trong đó families là tên của columns families mà
colums được nhóm vào trong đó, qualifier để xác định
column.
 Gía trị của mỗi columns được gọi là cell, mỗi cells chứa
nhiều cặp “version(timestamp, value)”. Trong đó timestamp
là giá trị được sinh ra bởi hệ thống hoăc được xác định bởi
người dùng. Các version khác nhau được phân biệt với
nhau bởi timestamp, trong 1 cells có thể lưu trữ nhiều
version của data ứng với thời gian được đưa vào hệ thống
khác nhau. Các version này được sắp xếp theo thứ tự từ
mới đến cũ.
76
So sánh HBase 77
So sánh HBase 78
Sử dụng HBase
 Có thể sử dụng Hbase thông qua Java API, REST service, Thrift và Avro
 Sử dụng Hbase cho hệ thống của mình nếu:
 Cần đọc ghi random
 Cần phục vụ hàng nghìn thao tác trên nhiều TB dữ liệu
 Mô hình truy cập dữ liệu là rõ ràng và đơn giản
 Không sử dụng Hbase nếu:
 Chỉ append dữ liệu và có xu hướng đọc tất cả
 Thực hiện những truy vấn phân tích phức tạp
 Dữ liệu của bạn chỉ phù hợp với dạng hệ thống standalone mạnh mẽ
79
Apache Hive
80
Giới thiệu Apache Hive
 Hive là hạ tầng kho dữ liệu (data warehouse) cho Hadoop
 Nhiệm vụ chính là cung cấp sự tổng hợp dữ liệu, truy vấn và phân tích dữ
liệu phân tán
 Hỗ trợ truy xuất giống SQL đến dữ liệu có cấu trúc, cũng như phân tích
BigData với MapReduce
81
Kiến trúc Hive 82
Hoạt động của Hive 83
Mô hình dữ liệu trong Hive
Dữ liệu trong Hive được tổ chức thành các kiểu sau:
 Databases: là namespace cho các tables, dùng để nhóm và quản lý các
nhóm tables khác nhau
 Tables: tương tự như table trong các hệ cơ sở dữ liệu quan hệ. Có 2 kiểu
table đó là: Managed Table và External tables
84
CREATE TABLE managed_table(dummy STRING);
LOAD DATA INPATH '/user/hadoop/data.txt' INTO table managed_table;
CREATE EXTERNAL TABLE external_table (dummy STRING)
LOCATION '/user/hadoop/external_table';
LOAD DATA INPATH '/user/hadoop/data.txt' INTO TABLE external_table;
Mô hình dữ liệu trong Hive
 Partions: Mỗi table có thể có 1 hoặc nhiều các khóa mà từ đó xác định dữ
liệu sẽ được lưu trữ ở đâu
 Buckets: Dữ liệu trong mỗi partion có thể được phân chia thành nhiều
buckets khác nhau dựa trên 1 hash của 1 colume bên trong table. Mỗi
bucket lưu trữ dữ liệu của nó bên dưới 1 thư mục riêng. Việc phân chia
các partion thành các bucket giúp việc thực thi các query dễ dàng hơn.
85
CREATE TABLE logs (ts BIGINT, line STRING)
PARTITIONED BY (dt STRING, country STRING);
Mô hình dữ liệu trong Hive 86
Các kiểu dữ liệu trong Hive
Các kiểu dữ liệu nguyên thủy sau sẽ được hỗ trợ đối với Hive:
 Integers:
 TINYINT – 1 byte integer
 SMALLINT – 2 byte integer
 INT – 4 byte integer
 BIGINT – 8 byte integer
 Boolean type
 BOOLEAN – TRUE/FALSE
 Floating point numbers
 FLOAT – single precision
 DOUBLE – Double precision
 String type
 STRING – sequence of characters in a specified character set
87
Các kiểu dữ liệu trong Hive 88
Các kiểu dữ liệu khác:
 Structs: là kiểu dữ liệu mà mỗi phần tử bên trong đó có thể được truy cập thông qua việc sử
dụng ký hiệu (.) . Ví dụ, với kiểu dữ liệu STRUCT {a INT; b INT} ví dụ trường a của nó có thể
truy cập thông qua c.a
 Maps (key-value tuples): là kiểu dữ liệu mà các phần tử sẽ được truy cập thông qua ký hiệu
['element name']. Đối với map M thực hiện việc map dữ liệu đối với khóa ‘group’ -> thì dữ
liệu sẽ được sử dụng bởi trường M['group']
 Arrays (indexable lists): Kiểu mảng.
Ví dụ sử dụng Hive
 Kịch bản sử dụng được đưa ra là ta sẽ sử dụng Hive để phân tích dữ liệu
thu được từ các apache webserver được lưu trữ trên HDFS
 Nội dung của 1 file Log sẽ có định dạng như sau:
89
64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables
HTTP/1.1"401 12846
64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1" 20
Ví dụ sử dụng Hive
 Ta thực hiện lưu trữ file này dưới đường dẫn /user/logs/access.log.
 Ta thực hiện việc tạo 1 Hive table để map với các dữ liệu này.
90
CREATE EXTERNAL TABLE request(address STRING, info STRING) ROW FORMAT
DELIMITED FIELDS TERMINATED BY '- -'
LINES TERMINATED BY 'n'
STORED AS TEXTFILE
LOCATION '/user/logs/access.log';
Ví dụ sử dụng Hive
Một số truy vấn mẫu:
 Liệt kê tất cả thông tin thu được từ trong các table:
 Liệt kê các IP đã thực hiện truy cập tới:
 Liệt kê số lượng request theo từng IP:
91
SELECT * FROM request;
SELECT DISTINCT address FROM request;
SELECT address, count(1) FROM request
GROUP BY address ORDER BY address DESC;
92

More Related Content

What's hot

TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)Trieu Nguyen
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTMasterCode.vn
 
phân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinphân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinQuynh michelanh quynh
 
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễn
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễnGiới thiệu cơ bản về Big Data và các ứng dụng thực tiễn
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễnTrieu Nguyen
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
Hbase, Cách thức lưu trữ và tìm kiếm
Hbase, Cách thức lưu trữ và tìm kiếmHbase, Cách thức lưu trữ và tìm kiếm
Hbase, Cách thức lưu trữ và tìm kiếmTuan Bach Van
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyPhamTuanKhiem
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuMasterCode.vn
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKALựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKAHo Quang Thanh
 
Chương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchChương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchBIC
 
Big data là gì và người ta khai thác
Big data là gì và người ta khai thácBig data là gì và người ta khai thác
Big data là gì và người ta khai thácletranganh
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)realpotter
 
Cơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếCơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếTran Tien
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmTrần Gia Bảo
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuThiênĐàng CôngDân
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGThùy Linh
 

What's hot (20)

TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 
NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
phân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tinphân tích thiết kế hệ thống thông tin
phân tích thiết kế hệ thống thông tin
 
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễn
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễnGiới thiệu cơ bản về Big Data và các ứng dụng thực tiễn
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễn
 
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uốngĐề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Hbase, Cách thức lưu trữ và tìm kiếm
Hbase, Cách thức lưu trữ và tìm kiếmHbase, Cách thức lưu trữ và tìm kiếm
Hbase, Cách thức lưu trữ và tìm kiếm
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệu
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKALựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
Lựa chọn thuộc tính và Khai phá luật kết hợp trên WEKA
 
Chương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà SáchChương trình Quản lý Nhà Sách
Chương trình Quản lý Nhà Sách
 
Big data là gì và người ta khai thác
Big data là gì và người ta khai thácBig data là gì và người ta khai thác
Big data là gì và người ta khai thác
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)
 
Cơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quếCơ sở dữ liệu phân tán - phạm thế quế
Cơ sở dữ liệu phân tán - phạm thế quế
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềm
 
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đĐề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 

Similar to Hadoop - Hệ thống tính toán và xử lý dữ liệu lớn

Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gìHLV
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gìHLV
 
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptx
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptxBáo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptx
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptxBách Nguyễn
 
TIN HỌC ĐẠI CƯƠNG.pptx
TIN HỌC ĐẠI CƯƠNG.pptxTIN HỌC ĐẠI CƯƠNG.pptx
TIN HỌC ĐẠI CƯƠNG.pptxLikHuk
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensourceMinh Tri Lam
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfCriz20
 
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?VWS2017: Bắt đầu Big Data từ đâu và như thế nào?
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?Hong Ong
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptxDuyThnh28
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Designyht4ever
 
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxThu Lam
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlHuy Feng
 
Báo cáo hdh
Báo cáo hdhBáo cáo hdh
Báo cáo hdhhuyltrn
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttvo nhan
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake phplaonap166
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tanThao Vu
 
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.doc
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.docỨng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.doc
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.docDịch vụ viết thuê Luận Văn - ZALO 0932091562
 
Software Stack là gì.pdf
Software Stack là gì.pdfSoftware Stack là gì.pdf
Software Stack là gì.pdfGrowup Work
 

Similar to Hadoop - Hệ thống tính toán và xử lý dữ liệu lớn (20)

Trongtruong so27a 09
Trongtruong so27a 09Trongtruong so27a 09
Trongtruong so27a 09
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gì
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gì
 
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptx
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptxBáo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptx
Báo cáo bài tập Lưu trữ và xử lý dữ liệu lớn.pptx
 
TIN HỌC ĐẠI CƯƠNG.pptx
TIN HỌC ĐẠI CƯƠNG.pptxTIN HỌC ĐẠI CƯƠNG.pptx
TIN HỌC ĐẠI CƯƠNG.pptx
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensource
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?VWS2017: Bắt đầu Big Data từ đâu và như thế nào?
VWS2017: Bắt đầu Big Data từ đâu và như thế nào?
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linux
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdl
 
Báo cáo hdh
Báo cáo hdhBáo cáo hdh
Báo cáo hdh
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_httt
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tan
 
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.doc
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.docỨng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.doc
Ứng Dụng Mô Hình Mapreduce Xây Dựng Hệ Thống Đánh Giá Độ Tƣơng Đồng Văn Bản.doc
 
Software Stack là gì.pdf
Software Stack là gì.pdfSoftware Stack là gì.pdf
Software Stack là gì.pdf
 

Hadoop - Hệ thống tính toán và xử lý dữ liệu lớn

  • 1. Hệ thống tính toán và dữ liệu lớn NGUYỄN VĂN THÀNH
  • 4. Big Data là gì? 4
  • 5. Định nghĩa Big Data  Tập hợp dữ liệu có dung lượng khổng lồ  Các công cụ ứng dụng xử lý dữ liệu truyền thống không thể đảm đương được 5
  • 6. Định nghĩa Big Data  Kích thước của Big Data đang ngày một tăng 6
  • 7. Tính chất của Big Data Big Data Velocity VarietyVolume 7
  • 8. Một vài ví dụ Big Data  Dữ liệu từ các thí nghiệm của máy gia tốc hạt lớn ở châu Âu  Dữ liệu từ các trạm quan sát vũ trụ  Dữ liệu từ công tác giải mã gen di truyền của con người  Dữ liệu sinh ra bởi mạng xã hội (Facebook, Twitter, Google Plus.v.v..) 8
  • 9. Tình hình Big Data hiện nay  Theo tài liệu của Intel vào tháng 9/2013, hiện nay thế giới đang tạo ra 1 petabyte dữ liệu trong mỗi 11 giây và nó tương đương với một đoạn video HD dài 13 năm. 9
  • 10. Tình hình Big Data hiện nay 10 40 PB 24,7 TB 50 tỉ bức ảnh Dữ liệu truy vấn, media..
  • 11. Lợi ích của Big Data 11 “Vấn đề thật sự không nằm ở việc bạn thu thập dữ liệu, thay vào đó, là bạn dùng Big Data để làm gì”
  • 12. Lợi ích của Big Data Một số lợi ích mà Big Data có thể mang lại:  cắt giảm chi phí  tiết kiệm thời gian và giúp tối ưu hoá sản phẩm  đồng thời hỗ trợ con người đưa ra những quyết định đúng và hợp lý hơn. 12 Theo Oracle, việc phân tích Big Data và những dữ liệu dung lượng lớn đã giúp các tổ chức kiếm được 10,66$ cho mỗi 1$ chi phí phân tích, tức là gấp 10 lần Đối với các doanh nghiệp TMĐT, thu thập và nghiên cứu thông tin về sở thích, thói quen của khách hàng sẽ giúp bán được nhiều hàng hơn nhờ việc đưa ra các chiến lược kinh doanh hiệu quả, tăng trải nghiệm mua sắm của người dùng. Xa hơi một chút, ứng dụng được Big Data có thể giúp các tổ chức, chính phủ dự đoán được tỉ lệ thất nghiệp, xu hướng nghề nghiệp của tương lai để đầu tư cho những hạng mục đó, hoặc cắt giảm chi tiêu, kích thích tăng trưởng kinh tế, v/v...
  • 13. Các công nghệ khai thác Big Data Big Data cần đến các kĩ thuật khai thác thông tin rất đặc biệt do tính chất khổng lồ và phức tạp của nó. 13 crowsourcing (tận dụng nguồn lực từ nhiều thiết bị điện toán trên toàn cầu để cùng nhau xử lí dữ liệu Các biện pháp machine learning, xử lý ngôn ngữ tự nhiên, xử lí tín hiệu, mô phỏng…
  • 14. Các công nghệ khai thác Big Data Ngoài ra, các cơ sở dữ liệu hỗ trợ xử lí dữ liệu song song, ứng dụng hoạt động dựa trên hoạt động tìm kiếm, file system dạng rời rạc, NoSQL, Data Warehouse, các hệ thống điện toán đám mây (bao gồm ứng dụng, nguồn lực tính toán cũng như không gian lưu trữ) và bản thân Internet cũng là những công cụ đắc lực phục vụ cho công tác nghiên cứu và trích xuất thông tin từ Big Data 14
  • 15. Tương lai của Big Data 15  Việc tiêu thụ một lượng dữ liệu lớn sẽ dần phổ biến hơn với mọi người, từ những người nông dân cho đến các anh kĩ sư  Các công ty chuyên cung cấp giải pháp Big Data sẽ mở rộng nó và áp dụng Big Data nhằm giải quyết những vấn đề trong đời thường và trả lời cho các nhu cầu cơ bản của con người
  • 17. 17 “Hadoop is Swiss army knife of 21st Century”
  • 18. Giới thiệu Apache Hadoop “Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách miễn phí. Nó cho phép các ứng dụng có thể làm việc với hàng ngàn node khác nhau và hàng petabyte dữ liệu. Hadoop lấy được phát triển dựa trên ý tưởng từ các công bố của Google về mô hình MapReduce và hệ thống file phân tán Google File System (GFS).” 18
  • 20. Hadoop và Big Data  Hadoop đơn giản hoá việc thực hiện các yêu cầu xử lý dữ liệu mạnh mẽ, các ứng dụng phân tán mức cao  Hadoop cung cấp cách thức tiết kiệm chi phí cho việc lưu trữ lượng lớn dữ liệu trên cụm các máy tính phần cứng chi phí thấp  Có sự khác biệt với cách phương pháp phân tán khác  Cung cấp cơ chế mạnh mẽ cho phân tích dữ liệu  Lưu trữ số lượng lớn  Xử lý phân tán và truy cập dữ liệu nhanh chóng  Tin cậy, chống chịu lỗi và khả mở 20
  • 21. Hadoop và Big Data 21
  • 22. Hệ sinh thái Hadoop  Apache Hadoop nguồn gốc là để quản lý và truy cập dữ liệu, và chỉ bao gồm 2 thành phần là: Hadoop Distributed File System (HDFS) và MapReduce. 22
  • 23. Hệ sinh thái Hadoop  Theo thời gian, Hadoop được kết hợp với 1 loạt các dự án khác để trở thành một nền tảng hoàn chỉnh cho BigData 23
  • 24. Hệ sinh thái Hadoop  Hiện nay có rất nhiều nhà cung cấp đóng gói và hỗ trợ Hadoop cho việc khai thác và lưu trữ Big Data (Hadoop distributions and commercial support) 24
  • 25. Lợi ích của Hadoop 25 Khả năng mở rộng Mở rộng lên tới hàng nghìn node trên 1 cluster Tiết kiệm chi phí Phần cứng giá rẻ, phần mềm mã nguồn mở Linh hoạt Linh hoạt trong phân tích và khai thác dữ liệu
  • 26. Kiến trúc Hadoop 26 Với 2 thành phần core là HDFS và MapReduce, Hadoop 1.0 đã rất thành công trong việc đáp ứng khả năng lưu trữ và xử lý phân tán cũng như khả năng mở rộng (khoảng 4000 node trên 1 Hadoop cluster)
  • 27. Kiến trúc Hadoop Tuy nhiên Hadoop 1.0 vẫn còn tồn tại một số nhược điểm:  Không có khả năng mở rộng chiều ngang cho NameNode (1 thành phần quan trọng của HDFS)  Không hỗ trợ tính sẵn sàng cao cho NameNode  Sự quá tải của JobTracker (1 thành phần điều phối hoạt động của MapReduce)  Không hỗ trợ các ứng dụng Non-MapReduce Big Data (Graph processing..)  Không cho phép tích hợp các engine tính toán, khai thác dữ liệu khác nhau  Chỉ chạy được trên Linux 27
  • 28. Kiến trúc Hadoop 28 Tính năng mới của Hadoop 2.0:  HDFS federation  NameNode HA  YARN: Data Operating System, quản lý tài nguyên Hadoop cluster  MapReduce 2.0  Hỗ trợ chạy trên Windows  Hỗ trợ chạy trên các nền tảng Cloud (OpenStack, Windows Azure, Amazone, Google)
  • 29. Các thành phần của YARN  ResourceManager (RM):  Chạy trên master node  Quản lý lịch trình tài nguyên chung  Điều phối tài nguyên giữa các ứng dụng 29  Node Manager (NM):  Chạy trên slave nodes  Giao tiếp với RM
  • 30. Các thành phần của YARN  Containers  Tạo bởi RM dựa trên request  Cấp phát tài nguyên (memory, CPU) trên slave nodes  Các ứng dụng có thể chạy trên một hoặc nhiều container 30  Application Master (AM)  1 ứng dụng có 1 AM  Đặc tả về framework và ứng dụng  Chạy trong một container  Có thể yêu cầu them container để chạy các nhiệm vụ của ứng dụng
  • 31. YARN là chìa khoá của Hadoop 2  Với các tính năng kể trên, YARN là kiến trúc trung tâm của Hadoop 2  Cung cấp cơ chế quản lý tài nguyên hiệu quả, linh hoạt, bảo mật và thống nhất các công cụ trên toàn Hadoop cluster  YARN mở rộng Hadoop với những công nghệ mới giúp các Data center quản lý được hiệu quả chi phí, mở rộng tuyến tính của lưu trữ và xử lý dữ liệu  YARN cung cấp cho các lập trinh viên một framework duy nhất để viết các ứng dụng sử dụng dữ liệu trên Hadoop 31
  • 32. YARN hoạt động như thế nào? 32
  • 33. YARN hoạt động như thế nào? 33
  • 34. YARN hoạt động như thế nào? 34
  • 35. YARN hoạt động như thế nào? 35
  • 36. YARN hoạt động như thế nào? 36
  • 37. YARN hoạt động như thế nào? 37
  • 38. Hadoop Big Data Platform 38
  • 40. Người dùng Hadoop nổi bật  Yahoo!:  19/2/2008 Yahoo tuyên bố ứng dụng Hadoop lớn nhất thế giới với hơn 10.000 node cho 1 Hadoop cluster được sử dụng trong hệ thống tìm kiếm Yahoo Webmap.  Facebook:  2010 Facebook tuyên bố sở hữu những Hadoop cluster lớn nhất thế giới với 21PB lưu trữ.  13/06/2012 họ công bố dữ liệu đã tăng lên đến 100PB  8/11/2012 các dữ liệu tập của Hadoop tại các kho dữ liệu tăng lên gần nửa PB mỗi ngày 40
  • 42. Giới thiệu HDFS  Hadoop Distributed File System (HDFS): HDFS là một hệ thống tập tin phân tán của Hadoop cung cấp khả năng tăng tuyến tính và lưu trữ dữ liệu đáng tin cậy, được thiết kế để lưu trữ phân tán trên các cluster lớn mà có chi phí thấp 42
  • 43. Giới thiệu HDFS  HDFS ra đời dựa trên nhu cầu lưu trữ dữ liệu của Nutch, một dự án Search Engine nguồn mở  HDFS ứng dụng kiến trúc của Google File System (GFS) 43 Google File System
  • 44. Đặc trưng của HDFS  Khả năng phát hiện lỗi, chống chịu lỗi  Kích thước các file sẽ lớn hơn so với các chuẩn truyền thống, các file có kích thước hàng GB sẽ trở nên phổ biến  Chỉ append dữ liệu vào cuối file thay vì ghi đè  Các thao tác đọc ngẫu nhiên không tồn tại 44
  • 45. Kiến trúc HDFS 45  HDFS duy trì một cấu trúc cây phân cấp các file, thư mục mà các file sẽ đóng vai trò là các node lá.  Mỗi file sẽ được chia ra làm một hay nhiều block và mỗi block này sẽ có một block ID để nhận diện.  Các block của cùng một file (trừ block cuối cùng) sẽ có cùng kích thước và kích thước này được gọi là block size của file đó. Mỗi block của file sẽ được lưu trữ thành ra nhiều bản sao (replica) khác nhau vì mục đích an toàn dữ liệu
  • 46. Kiến trúc HDFS HDFS có kiến trúc master/slave:  NameNode duy nhất cho toàn cluster: đóng vai trò master, duy trì chịu trách nhiệm duy trì thông tin về cấu trúc cây phân cấp các file, thư mục của hệ thống file và các metadata khác của hệ thống file:  File System Namespace  Thông tin để ánh xạ từ tên file ra thành danh sách các block  Nơi lưu trữ các block  NameNode có khả năng nhận biết cấu trúc topology của mạng để xác định “khoảng cách” giữa 2 node trên Hadoop cluster  Secondary NameNode có khả năng hoạt động ở chế độ standby, sẽ tự động được active ngay khi NameNode gặp sự cố 46
  • 47. Kiến trúc HDFS  Các DataNode sẽ chịu trách nhiệm lưu trữ các block thật sự của từng file của hệ thống file phân tán lên hệ thống file cục bộ của nó. Mỗi 1 block sẽ được lưu trữ như là 1 file riêng biệt trên hệ thống file cục bộ của DataNode.  Định kỳ Datanode sẽ gửi thông điệp “heart beat” để thông báo cho NameNode về tình trạng “live” và các bản sao blok đang sẵn sàng 47
  • 48. Kiến trúc HDFS  Định kỳ Datanode sẽ gửi thông điệp “heart beat” để thông báo cho NameNode về tình trạng “live” và các bản sao blok đang sẵn sàng 48
  • 50. Thao tác đọc trên HDFS 50 DataNod e DataNod e DataNod e
  • 51. Thao tác ghi trên HDFS 51 DataNod e DataNod e DataNod e
  • 52. Sự toàn vẹn dữ liệu  HDFS sử dụng checksum để xác nhận dữ liệu (CRC32)  Khi tạo tập tin  Client tính checksum (512 byte)  DataNode lưu trữ checksum  Khi đọc tập tin  Client tìm kiếm dữ liệu và checksum từ DataNode  Nếu xác nhận fail, Client sẽ tiến hành đọc bản sao khác 52
  • 53. Sao chép dữ liệu (Replication)  HDFS sao chép ở mức block  Có ba mức độ sao chép  Cùng máy – Cùng rack – Khác rack  NameNode phát hiện các DataNode có sự cố  Chọn DataNode mới cho bản sao mới  Cân bằng dung lượng sử dụng trên các đĩa  Cân bằng lưu lượng băng thông với DataNode 53
  • 54. Các giao diện tương tác với HDFS  Giao diện commandline  Giao diện java  Giao diện web 54
  • 55. Quản trị HDFS  Permission: HDFS có một mô hình phân quyền tập tin và thư mục giống với POSIX (Portable Operating System Interface [for Unix]). Có ba loại quyền truy cập: quyền được phép đọc (r), quyền ghi (w), và quyền thực thi (x)  Trên Hadoop cũng có super-user, có quyền hạn toàn cục và không bị kiểm tra quyền truy cập  Quotas: HDFS cho phép người quản trị có thể thiết lập hạn ngạch (quotas) cho số lượng tên (file/thư mục) sử dụng và dung lượng sử dụng cho các thư mục. Có hai loại hạn ngạch là hạn ngạch tên (name quotas) và hạn ngạch dung lượng (space quotas). 55
  • 57. Giới thiệu MapReduce  MapReduce là mô hình dùng cho xử lý tính toán song song và phân tán trên hệ thống phân tán  Mô hình này sẽ phân rã từ nghiệp vụ chính thành các công việc con để chia từng công việc con này về các máy tính trong hệ thống thực hiện xử lý một cách song song, sau đó thu thập lại các kết quả  Hadoop MapReduce là một framework ứng dụng kiến trúc MapReduce của Google công bố 57
  • 58. Mô hình MapReduce  Hàm Map 58  Hàm Reduce
  • 59. Một số khái niệm Hadoop MapReduce  Job Tracker: Master MapReduce  Tiếp nhận các yêu cầu thực thi MapReduce job  Phân chia job thành các task và phân công cho các Task Tracker thực hiện  Quản lý tình trạng thực hiện của Task Tracker  Task Tracker:  Tiếp nhận các task được Job Tracker phân công và thực hiện nó 59
  • 60. Cơ chế hoạt động 60
  • 61. Khả năng chịu lỗi của MapReduce  JobTracker kiểm tra kết nối tới các TaskTracker theo chu kỳ  Thực thi lại các lệnh map() và reduce() nếu xảy ra lỗi  Nếu 1 TaskTracker nào gặp sự cố thì job sẽ được gán cho TaskTracker khác  Nếu JobTracker phát hiện ra 2 lỗi trên cùng 1 record dữ liệu, thì sẽ bỏ qua lỗi đó trong lần xử lý kế tiếp của TaskTracker. 61
  • 62. Ưu điểm của Hadoop MapReduce Dữ liệu được xử lý là locally (các thao tác được thực hiện ngay trên node chức các block cần xử lý), vì vậy các Task Tracker sẽ không phải đi nạp dữ liệu từ các máy tính khác -> Gia tang hiệu suất về mặt thời gian và băng thông 62
  • 63. Nhược điểm của MapReduce  Không reduce() nào được bắt đầu cho đến khi map() kết thúc  Nếu map() fail bất kỳ lúc nào trước khi reduce() kết thúc thì toàn bộ lệnh phải thực hiện lại 63
  • 64. Phát triển ứng dụng MapReduce  Trên thực tế, để triển khai mô hình ứng dụng với MapReduce với các ngôn ngữ (C/C++, Java..) chúng ta cần tới MapReduce framework:  Input reader  Map function  Partion function  Compare function  Reduce function  Output writer 64
  • 65. Ứng dụng MapReduce  MapReduce không phải là mô hình áp dụng cho tất cả các vấn đề  Một số trường hợp thích hợp với MapReduce:  Dữ liệu cần xử lý lớn, kích thước tập tin lớn  Các ứng dụng thực hiện xử lý, phân tích dữ liệu, thời gian xử lý đáng kể, có thể tính bằng phút, giờ, ngày, tháng..  Cần tối ưu hoá về băng thông trên cluster.  Một số trường hợp có thể không phù hợp:  Dữ liệu cần xử lý là tập hợp nhiều tập tin nhỏ.  Cần tìm kiếm nhanh (tốc độ có ý nghĩa đến từng giây) trên tập dữ liệu lớn. Do độ trễ khi xử lý các MapReduce Job và khởi tạo các task trên DataNode. 65
  • 66. Ứng dụng MapReduce  Apache Nutch, search engine mã nguồn mở đã sử dụng MapReduce làm mô hinh để thực hiện các thao tác crawl dữ liệu  Last.fm là một trang web hàng đầu về nghe nhạc sử dụng MapReduce để thống kê các thông tin về các bài nhạc của mình  Tại VN:  Mwork sử dụng Hadoop để lưu trữ và xử lý Log  Cốc cốc search engine sử dụng Hadoop phục vụ xử lý thao tác crawl 66
  • 68. NoSQL và Big Data  NoSQL là viết tắt cho Not Relational SQL hay Not Only SQL. NoSQL dùng SQL nhưng nó dùng nhiều hơn cả SQL để đạt được mục tiêu của mình  NoSQL cung cấp một cơ chế cho việc lưu trữ và truy xuất dữ liệu sử dụng mô hình thống nhất nới lỏng hơn so với cơ sở dữ liệu quan hệ truyền thống 68
  • 69. NoSQL và Big Data  CSDL NoSQl chấp nhận sự đa dạng về cấu trúc dữ liệu  CSDL NoSQl có hiệu suất cao và tính sẵn sàng cao  CSDL NoSQL không thể cung cấp 100% ACID (Atomicity, Consistency, Isolation, Durability). Mặc dù vậy, nó cung cấp sự thống nhất cuối cùng.  NoSQL thuộc nhiều loại như: column store, document store, key-value store, và graph database.  Column: Hbase, Cassandra, Accumulo  Document: MongoDB, Couchbase, Raven  Key-value: Dynamo, Riak, Azure, Redis, Cache, GT.m  Graph: Neo4j, Allegro, Virtouso, Bigdata 69
  • 70. Giới thiệu HBase  HBase là 1 hệ cơ sở dữ liệu mã nguồn mở được xây dựng dựa trên Google BigTable  HBase cung cấp khả năng lưu trữ dữ liệu lớn lên tới hàng tỷ dòng, hàng triệu cột khác nhau cũng như hàng petabytes dung lượng  Hbase là 1 NoSQL điển hình  HBase đang là 1 trong các top-level project của tổ chức Apache Software Foundation và được cung cấp dưới giấy phép: Apache Lisence 2.0 70
  • 73. Kiến trúc của HBase Khi có yêu cầu đọc hoặc ghi:  Client kết nối tới Zookeeper để tìm địa chỉ của ROOT table.  Client sử dụng ROOT Table để tìm ra địa chỉ của META table chứa thông tin của region mà nó cần tìm.  Client sử dụng META table để tìm kiếm thông tin của region mà nó cần tìm  Client tương tác trực tiếp với RegionServer 73
  • 74. Mô hình dữ liệu của HBase  Hbase được xây dựng dựa trên thiết kế của Google BigTable nên có nhiều điểm giống  Dữ liệu được lưu trong 1 table của HBase được xác định bởi các khóa: “Table, Rowkey, Column Families, Column, Timestamp” 74
  • 75. Mô hình dữ liệu của HBase  Mỗi table bao gồm rất nhiều row, có thể lên tới hàng tỷ rows trong 1 table của HBase, các row được xác định với nhau bởi 1 khóa duy nhất “rowkey”, rowkey trong HBase có chức năng tương tự với Primary key trong các hệ cơ sở dữ liệu thông thường .Các row trong cùng 1 talbe luôn được sắp xếp theo thứ tự tự điển theo rowkey.  Mỗi row gồm nhiều column khác nhau, các column gộp lại thành “column families”. Các column trong 1 column families được lưu trữ trong Hfile 75
  • 76. Mô hình dữ liệu của HBase  1 column của Hbase được khai báo dưới dạng:”families: qualifier”, trong đó families là tên của columns families mà colums được nhóm vào trong đó, qualifier để xác định column.  Gía trị của mỗi columns được gọi là cell, mỗi cells chứa nhiều cặp “version(timestamp, value)”. Trong đó timestamp là giá trị được sinh ra bởi hệ thống hoăc được xác định bởi người dùng. Các version khác nhau được phân biệt với nhau bởi timestamp, trong 1 cells có thể lưu trữ nhiều version của data ứng với thời gian được đưa vào hệ thống khác nhau. Các version này được sắp xếp theo thứ tự từ mới đến cũ. 76
  • 79. Sử dụng HBase  Có thể sử dụng Hbase thông qua Java API, REST service, Thrift và Avro  Sử dụng Hbase cho hệ thống của mình nếu:  Cần đọc ghi random  Cần phục vụ hàng nghìn thao tác trên nhiều TB dữ liệu  Mô hình truy cập dữ liệu là rõ ràng và đơn giản  Không sử dụng Hbase nếu:  Chỉ append dữ liệu và có xu hướng đọc tất cả  Thực hiện những truy vấn phân tích phức tạp  Dữ liệu của bạn chỉ phù hợp với dạng hệ thống standalone mạnh mẽ 79
  • 81. Giới thiệu Apache Hive  Hive là hạ tầng kho dữ liệu (data warehouse) cho Hadoop  Nhiệm vụ chính là cung cấp sự tổng hợp dữ liệu, truy vấn và phân tích dữ liệu phân tán  Hỗ trợ truy xuất giống SQL đến dữ liệu có cấu trúc, cũng như phân tích BigData với MapReduce 81
  • 84. Mô hình dữ liệu trong Hive Dữ liệu trong Hive được tổ chức thành các kiểu sau:  Databases: là namespace cho các tables, dùng để nhóm và quản lý các nhóm tables khác nhau  Tables: tương tự như table trong các hệ cơ sở dữ liệu quan hệ. Có 2 kiểu table đó là: Managed Table và External tables 84 CREATE TABLE managed_table(dummy STRING); LOAD DATA INPATH '/user/hadoop/data.txt' INTO table managed_table; CREATE EXTERNAL TABLE external_table (dummy STRING) LOCATION '/user/hadoop/external_table'; LOAD DATA INPATH '/user/hadoop/data.txt' INTO TABLE external_table;
  • 85. Mô hình dữ liệu trong Hive  Partions: Mỗi table có thể có 1 hoặc nhiều các khóa mà từ đó xác định dữ liệu sẽ được lưu trữ ở đâu  Buckets: Dữ liệu trong mỗi partion có thể được phân chia thành nhiều buckets khác nhau dựa trên 1 hash của 1 colume bên trong table. Mỗi bucket lưu trữ dữ liệu của nó bên dưới 1 thư mục riêng. Việc phân chia các partion thành các bucket giúp việc thực thi các query dễ dàng hơn. 85 CREATE TABLE logs (ts BIGINT, line STRING) PARTITIONED BY (dt STRING, country STRING);
  • 86. Mô hình dữ liệu trong Hive 86
  • 87. Các kiểu dữ liệu trong Hive Các kiểu dữ liệu nguyên thủy sau sẽ được hỗ trợ đối với Hive:  Integers:  TINYINT – 1 byte integer  SMALLINT – 2 byte integer  INT – 4 byte integer  BIGINT – 8 byte integer  Boolean type  BOOLEAN – TRUE/FALSE  Floating point numbers  FLOAT – single precision  DOUBLE – Double precision  String type  STRING – sequence of characters in a specified character set 87
  • 88. Các kiểu dữ liệu trong Hive 88 Các kiểu dữ liệu khác:  Structs: là kiểu dữ liệu mà mỗi phần tử bên trong đó có thể được truy cập thông qua việc sử dụng ký hiệu (.) . Ví dụ, với kiểu dữ liệu STRUCT {a INT; b INT} ví dụ trường a của nó có thể truy cập thông qua c.a  Maps (key-value tuples): là kiểu dữ liệu mà các phần tử sẽ được truy cập thông qua ký hiệu ['element name']. Đối với map M thực hiện việc map dữ liệu đối với khóa ‘group’ -> thì dữ liệu sẽ được sử dụng bởi trường M['group']  Arrays (indexable lists): Kiểu mảng.
  • 89. Ví dụ sử dụng Hive  Kịch bản sử dụng được đưa ra là ta sẽ sử dụng Hive để phân tích dữ liệu thu được từ các apache webserver được lưu trữ trên HDFS  Nội dung của 1 file Log sẽ có định dạng như sau: 89 64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1"401 12846 64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523 64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291 64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1" 20
  • 90. Ví dụ sử dụng Hive  Ta thực hiện lưu trữ file này dưới đường dẫn /user/logs/access.log.  Ta thực hiện việc tạo 1 Hive table để map với các dữ liệu này. 90 CREATE EXTERNAL TABLE request(address STRING, info STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '- -' LINES TERMINATED BY 'n' STORED AS TEXTFILE LOCATION '/user/logs/access.log';
  • 91. Ví dụ sử dụng Hive Một số truy vấn mẫu:  Liệt kê tất cả thông tin thu được từ trong các table:  Liệt kê các IP đã thực hiện truy cập tới:  Liệt kê số lượng request theo từng IP: 91 SELECT * FROM request; SELECT DISTINCT address FROM request; SELECT address, count(1) FROM request GROUP BY address ORDER BY address DESC;
  • 92. 92

Editor's Notes

  1. Trong vài năm gần đây, chúng ta thường nghe nói tới 4 khái niệm liên quan tới xu hướng của nền công nghệ thông tin hiện đại, đó là Điện toán đám mây, Mạng xã hội, Thiết bị di động và Big Data. 3 cái đầu đã rất quen thuộc, vậy còn Big Data là gì?
  2. Trong một ngày thế giới có hàng ngàn tỉ gigabyte dữ liệu được sinh ra, từ những hình ảnh gởi lên Facebook, video tải lên Youtube, bài viết đăng lên diễn đàn... Big data là các tập hợp dữ liệu có dung lượng khổng lồ. Lượng dữ liệu đó cực kì lớn, đến nỗi những công cụ, ứng dụng xử lý dữ liệu truyền thống không thể nào đảm đương được. Từ đó khái niệm Big Data ra đời.
  3. Hiện nay vào khoảng vài chục terabyte đến nhiều petabyte cho 1 tập hợp dữ liệu.
  4. Vào năm 2001, nhà phân tích Doug Laney của hãng META Group đã đưa ra mô hình 3V để mô tả về Big Data: tăng về số lượng (volume), tăng về vận tốc (velocity) và tăng về chủng loại (variety).
  5. Big Data là nhu cầu tăng trưởng rất lớn, các tập đoàn công nghệ lớn trên thế giới đã chi hơn 15 tỉ USD cho việc quản lý và phân tích dữ liệu Năm 2010, ngành công nghiệp Big Data có giá trị hơn 100 tỉ USD và tăng nhanh với tốc độ 10% mỗi năm, nhanh gấp đôi so với ngành phần mềm
  6. Các công ty doanh nghiệp cũng đang sở hữu Big Data của riêng mình: Trang bán hàng trực tuyến eBay có 2 trung tâm dữ liệu với dung lượng lên đến 40PB Nhà bán lẻ online Amazon.com thì phải xử lí hàng triệu hoạt động mỗi ngày cũng như những yêu cầu từ khoảng nửa triệu đối tác bán hàng. Amazon sử dụng một hệ thống Linux và hồi năm 2005, họ từng sở hữu ba cơ sở dữ liệu Linux lớn nhất thế giới với dung lượng là 7,8TB, 18,5TB và 24,7TB. Facebook cũng phải quản lí 50 tỉ bức ảnh từ người dùng tải lên YouTube hay Google thì phải lưu lại hết các lượt truy vấn và video của người dùng cùng nhiều loại thông tin khác có liên quaBig Data là nhu cầu tăng trưởng rất lớn, các tập đoàn công nghệ lớn trên thế giới đã chi hơn 15 tỉ USD cho việc quản lý và phân tích dữ liệu Năm 2010, ngành công nghiệp Big Data có giá trị hơn 100 tỉ USD và tăng nhanh với tốc độ 10% mỗi năm, nhanh gấp đôi so với ngành phần mềm
  7. - Erik Swan, đồng sáng lập kiêm giám đốc công nghệ của công ty Spunk, dự đoán rằng sự thay đổi nhất trong Big Data chính là thái độ của mọi người đối với nó. Việc tiêu thụ một lượng dữ liệu lớn sẽ dần phổ biến hơn với mọi người, từ những người nông dân cho đến các anh kĩ sư. Mọi người sẽ mặc định sử dụng dữ liệu để phân tích mọi thứ trong vòng 10 năm tới. - Các công ty chuyên cung cấp giải pháp Big Data sẽ không còn bán dữ liệu và phân tích cho từng doanh nghiệp hay công ty riêng lẻ để phục vụ cho những mục đích quá chuyên biệt. Thay vào đó, họ sẽ mở rộng nó và áp dụng Big Data nhằm giải quyết những vấn đề trong đời thường và trả lời cho các nhu cầu cơ bản của con người. Đó sẽ là sự thay đổi về tính ứng dụng của Big Data.
  8. Hadoop phát triển theo giấy phép Apache license 2.0 Bản mới nhất là 2.6.0 vừa release ngày 18/11/2014
  9. Hadoop được tạo ra bởi Dough Cutting, người sáng tạo ra Apache Lucene. Hadoop bắt nguồn từ Nutch-một ứng dụng search engine mã nguồn mở - 2002, Nutch ra đời và sau đó các kỹ sư gặp vấn đề với khả năng lưu trữ và tốc độ truy xuất. Sự cần thiết của một phương pháp tính toán phân tán và tin cậy với khả năng mở rộng theo yêu cầu trên lượng lớn dữ liệu được crawl. Một năm sau, Google công bố bài báo về GFS và MapReduce, một thuật toán và nền tảng lập trình phân tán để xử lý tập hợp dữ liệu lớn. Dough Cutting và các kỹ sư đã bắt tay vào xây dựng nền tảng phân tán cho Nutch, với 2 thành phần là HDFS và Hadoop MapReduce. - 2006, Dough Cutting gia nhập Yahoo!, tại đây ông được tạo một môi trường tuyệt vời để phát triển Hadoop và vào tháng 2 năm 2008 Yahoo đã công bố sản phẩm search engine của họ được xây dựng trên một Hadoop cluster có kích thước 10.000 nhân vi xử lý. - 2008, Apache đưa Hadoop lên dự án top-level Apache Software Foundation, xác nhận sự thành công và ứng dụng rộng rãi của Hadoop.
  10. Hadoop đơn giản hoá việc thực hiện các yêu cầu xử lý dữ liệu mạnh mẽ, các ứng dụng phân tán mức cao. Nó cung cấp một cơ chế đáng tin cậy, cho phép chia nhỏ các nhiệm vụ phân tích trên một lượng lớn dữ liệu đa cấu trúc và phân phối trên hàng nghìn máy tính vật lý. Hadoop cung cấp cách thức tiết kiệm chi phí cho việc lưu trữ lượng lớn dữ liệu trên cụm các máy tính phần cứng chi phí thấp Sự khác biệt với cách phương pháp phân tán khác: Dữ liệu được phân tán trước Dữ liệu được sai chép trên cụm các máy tính, đảm bảo tính tin cậy và sẵn sàng cao Việc xử lý DL được thực thi ở nơi mà dữ liệu được lưu trữ, loại bỏ được nút thắt cổ chai băng thông
  11. Data access: Truy cập và tương tác với dữ liệu trên một loạt các công cụ: batch, interactive, streaming, real-time, NoSQL, Scripting Data management: Lưu trữ và xử lý tất cả các dữ liệu, bao gồm: HDFS và YARN - Security: Quản lý các policy một cách nhất quán trên các yêu cầu để xác thực, cấp phép, kiểm tra và bảo vệ dữ liệu - Operations: cung cấp một bộ đầy đủ các hoạt động cung cấp khả năng hiển thị sức khỏe của cluster cũng như khả năng quản lý và cấu hình tài nguyên Data governance và intergration: Cho phép nhanh chóng và dễ dàng để tải dữ liệu giữa Hadoop với các hệ thống lưu trữ khác, quản lý luồng dữ liệu vào ra của Hadoop
  12. Với 2 thành phần core là HDFS và MapReduce, Hadoop 1.0 đã rất thành công trong việc đáp ứng khả năng lưu trữ và xử lý phân tán cũng như khả năng mở rộng (khoảng 4000 node trên 1 Hadoop cluster).
  13. Không có khả năng mở rộng chiều ngang cho NameNode (1 thành phần quan trọng của HDFS) Không hỗ trợ tính sẵn sang cao cho NameNode Single Namenode và Single Namespace: bị giới hạn bởi RAM Các DataNode gặp sự cố khi cố gắng replicate dữ liệu ra các node đang bị quá tải xử lý hoặc nghẽn mạng Sự quá tải của JobTracker (1 thành phần điều phối hoạt động của MapReduce), JobTracker: Dành quá nhiều thời gian để quản lý vòng đời của ứng dụng, Single Listener Thread giao tiếp với hang nghìn MapReduce job Không hỗ trợ các ứng dụng Non-MapReduce Big Data Không khả mở cho các engine tính toán, khai thác dữ liệu khác nhau
  14. HDFS federation: cho phép nhiều NamNode với nhiều Namspace NameNode HA: chạy với chế độ Secondary NameNode standby YARN: (được đưa vào Hadoop 2 Beta từ 2013) cho phép các engine xử lý dữ liệu truy cập và khai thác dữ liệu trong Hadoop, quản lý tài nguyên tập trung của Hadoop cluster, YARN hiện tại chỉ quản lý CPU và memory (disk, network, GPU đang có trong kế hoạch phát triển tiếp theo) MapReduce 2.0: chuyển nhiệm vụ quản lý tài nguyên cho YARN Sử dụng OpenStack Swift file system, tích hợp với Docker container, chạy được trên phần cứng ảo hoá
  15. Hệ thống HDFS sẽ chạy trên các cluster với hàng trăm hoặc thậm chí hàng nghìn node. Các node này được xây 18 dựng nên từ các phần cứng thông thường, giá rẻ, tỷ lệ lỗi cao. Chất lượng và số lượng của các thành phần phần cứng như vậy sẽ tất yếu dẫn đến tỷ lệ xảy ra lỗi trên cluster sẽ cao. Vì thế, khả năng phát hiện lỗi, chống chịu lỗi và tự động phục hồi phải được tích hợp vào trong hệ thống HDFS Kích thước các file sẽ lớn hơn so với các chuẩn truyền thống, các file có kích thước hàng GB sẽ trở nên phổ biến. việc phân chia tập dữ liệu thành một số lượng ít file có kích thước lớn sẽ là tối ưu hơn. Hai tác dụng to lớn của điều này có thể thấy là giảm thời gian truy xuất dữ liệu và đơn giản hoá việc quản lý các tập tin. Hầu hết các file đều được thay đổi bằng cách append dữ liệu vào cuối file hơn là ghi đè lên dữ liệu hiện có. Việc ghi dữ liệu lên một vị trí ngẫu nhiên trong file không hề tồn tại. Một khi đã được tạo ra, các file sẽ trở thành file chỉ đọc (read-only), và thường được đọc một cách tuần tự. (phù hợp cho dạng dữ liệu Log)
  16. Block size mặc định của HDFS là 64MB, nhưng thông thường trên các hệ thống lớn người ta dùng block size là 128 MB Việc sử dụng block size lớn, tức sẽ giảm số lượng block của một file, mang lại một số thuận lợi. Đầu tiên, nó sẽ làm giảm nhu cầu tương tác với NameNode của client vì việc đọc/ghi trên một block chỉ cần một lần tương tác với NameNode để lấy Block ID và nơi lưu block đó. Thứ hai, với block size lớn, client sẽ phải tương tác với DataNode ít hơn. Mỗi lần client cần đọc một Block Id trên DataNode, client phải tạo một kết nối TCP/IP đến DataNode. Việc giảm số lượng block cần đọc sẽ giảm số lượng kết nối cần tạo, client sẽ thường làm việc với một kết nối bền vững hơn là tạo nhiều kết nối
  17. - Tất cả Metadata đều được NameNode lưu trữ trên bộ nhớ chính
  18. - Tất cả Metadata đều được NameNode lưu trữ trên bộ nhớ chính
  19. Kiến trúc HDFS được mô tả như hình trên
  20. Khi một client muốn đọc tập tin. HDFS client phải hỏi NameNode để lấy được danh sách các DataNode giữ bản sao các block của tập tin. Client sẽ liên hệ trực tiếp với DataNode và yêu cầu chuyển block mong muốn
  21. - Khi client ghi dữ liệu, đầu tiên nó phải hỏi NameNode để chọn DataNode để nạp bản sao block đầu tiên của tập tin. Client tổ chức một ống (pipeline) theo từng node và gửi data. Khi block đầu tiên được ghi vào, client sẽ yêu cầu DataNode mới để nạp bản sao của block kế tiếp. Ống mới sẽ được tổ chức và client gửi các byte tiếp theo của tập tin.
  22. - Hạn ngạch tên của một thư mục là một giới hạn cứng về số lượng file và thư mục trong cây thư mục bắt nguồn từ thư mục đó - Hạn ngạch dung lượng của một thư mục là một giới hạn cứng về số byte được sử dụng bởi các tập tin trong cây thư mục bắt nguồn thư mục đó. Việc cấp phát các block cho các file sẽ thất bại nếu hạn ngạch bị vượt qua.
  23. Hàm map: Người dùng đưa một cặp dữ liệu (key,value) làm input cho hàm map, và tùy vào mục đích của người dùng mà hàm map sẽ trả ra danh sách các cặp dữ liệu (intermediate key,value) Hàm reduce: Hệ thống sẽ gom nhóm tất cả value theo intermediate key từ các output của hàm map, để tạo thành tập các cặp dự liệu với cấu trúc là (key, tập các value cùng key). Dữ liệu input của hàm reduce là từng cặp dữ liệu được gom nhóm ở trên và sau khi thực hiện xử lý nó sẽ trả ra cặp dữ liệu (key, value) output cuối cùng cho người dùng.
  24. - JobTracker cũng có cấu trúc dữ liệu riêng của mình để sử dụng cho mục đích lưu trữ, ví dụ như nó sẽ lưu lại tiến độ tổng thể của từng job, lưu lại trang thái thực hiện của các TaskTracker để thuận tiện cho thao tác lên lịch phân công task, lưu lại địa chỉ lưu trữ của các output của các TaskTracker thực hiện maptask trả về
  25. Chương trình client sẽ gửi yêu cầu thực thi MapReduce job và có thể kèm theo dữ liệu input tới JobTracker Khi client nhận được thông báo hợp lệ, sẽ tiến hành phân rã input và ghi xuống HDFS JobTracker khởi tạo các thông tin cần thiết để thực thi job, các TaskTracker sẽ gửi thông báo về tình trạng hoạt động. Nếu TaskTracker có thể thực hiện JobTracker sẽ gửi job và vị trí input đã được split TaskTracker thực hiện map sẽ tiến hành nạp dữ liệu được split làm input cho hàm map(). Dữ liệu output sẽ được chạy qua hàm partition() để đưa vào từng partition ứng với reduce task sau này. Dữ liệu trong các partition của 1 output sẽ được xử lý bởi hàm combine() để tối ưu trước khi truyền tải. TaskTracker thực hiện reduce sẽ tiến hành reduce task với tập dữ liệu trên các partition output từ các hàm map(). Sau khi nạp dữ liệu thành công, TaskTracker sẽ tiến hành merge dữ liệu của các partition theo nhiều đợt và ghi kết quả ra các file trung gian. Các file này sẽ được merge lần nữa để được kết quả cuối cùng và được ghi xuống HDFS Khi TaskTracker reduce thực hiện thành công sẽ gửi tín hiệu “completed” của reduce task đến JobTracker. Nếu là reduce task cuối cùng thì sẽ JobTracker sẽ nhận và trả về thông báo kết quả cho client và xóa sạch các dữ liệu output của map task
  26. 1 Hbase cluster có 1 Master node, được gọi là HMaster, và nhiều Region server được gọi là HRegionServer. Mỗi RegionServer bao gồm nhiều Regions-Hregions Hmaster: Thực hiện các thao tác quản trị Quản lý và theo dõi Hbase cluster Đăng ký các Region tới các Region server Kiểm soát cân bằng tải và failover HRegionServer: Bao gồm Write-Ahead Log Chứa và quản lý các Region Chia nhỏ Region tự động Kiểm soát các yêu cầu đọc/ghi Tương tác trực tiếp với client Zookeeper: lưu trữ các metadata, region info. HFile: lưu trữ dữ liệu của HBase. HLog: lưu trữ các Log để có thể recovery lại quá trình ghi dữ liệu nếu có sự cố.
  27. Mỗi RegionServer: Bao gồm Write-Ahead Log (Hlog) và nhiều Region - Đơn vị lưu trữ cơ bản của HBase là region, việc phân chia tables thành các region đảm bảo khả năng phân tán và cân bảng tải của HBase. Mỗi region chứa 1 dải các row xếp liền nhau và chúng sẽ được tự động chia làm 2 nếu dữ liệu trong nó trở lên quá lớn.Mỗi region nằm trong 1 RegionServer duy nhất, nhưng mỗi RegionServer lại có thể chứa cùng 1 lúc nhiều region khác nhau Region được tạo thành bởi MemStore và Hfile Việc map các Region tới các Region Server được lưu trong bảng hệ thống gọi là .META Khi đọc hay ghi dữ liệu với Hbase, client đọc các thông tin của Region cần thao tác trong bảng .META và sẽ trực tiếp tương tác với Region Server
  28. Hbase vẫn chưa hoạt động tốt với table có nhiều hơn 2 hoặc 3 column families Column trong HBase không cần thiết phải khởi tạo từ khi khởi tạo bảng mà ta có thể tạo mới column ngay trong quá trình hoạt động. Trong 1 table có thể có số lượng column lên tới hàng nghìn hoặc nhiều hơn.
  29. Một điểm khác biệt nữa của HBase so với các hệ cơ sở dữ liệu thông thường khác là các giá trị “null” sẽ không được lưu trữ trong cơ sở dữ liệu HBase
  30. - Hive UI: cung cấp giao diện cho phép người sử dụng tương tác với hệ thống Hive. Hive cung cấp nhiều phương thức khác nhau cho phép người sử dụng tương tác với Hive: - CLI: giao diện dạng shell cho phép người sử dụng tương tác trực tiếp qua command line. - Hive Web Interface: giao diện Web cho phép người sử dụng thực hiện các truy vấn thông qua giao diện Web. - Hive Thrift Server: cho phép các client từ nhiều ngôn ngữ lập trình khác nhau có thể thực hiện tương tác với Hive. - Hive Driver: thành phần nhận các truy vấn và chuyển các truy vấn này thành các MapReduce Jobs để tiến hành xử lý yêu cầu của người sử dụng. - Driver: nhận các truy vấn, thành phần này thực hiện việc quản lý các sessions và cung cấp các API để thực thi và lấy dữ liệu trên  JDBC/ODBC interfaces. - Compiler: thành phần hiện việc phân tích ngữ nghĩa đối với các query, lấy các thông tin metadata cần thiết về table và partion từ metastore để sinh ra các excution plan. - Execute engine: thành phần thực thi các execution plan được tạo bởi compiler (submit các job tới MapReduce). Ngoài ra thành phần execution enginen này thực hiện việc quản lý các dependencies của các bước trong mỗi execution plan, thực thi từng bước này. - Hive Metastore: thành phần lưu trữ các metadata của Hive: table, partion, buckets bao gồm cả thông tin về các column trong mỗi table, các serializers và desrializers cần thiết để thực hiện việc đọc và ghi dữ liệu. Metastore sử dụng một cơ sở dữ liệu quan hệ để lưu trữ dữ liệu của chính mình.
  31. Quy trình hoạt động của Hive có thể được mô tả theo các bước sau: Các truy vấn tới từ User Interface (CLI, Hive Web Interface, Thirft Server) được gửi tới thành phần Driver (Bước 1) Driver tạo ra mới 1 session cho truy vấn này và gửi query tới compiler để nhận lấy Execution Plan (Bước 2) Compilter nhận các metadata cần thiết từ Metastore (Bước 3, 4). Các metadata này sẽ được sử dụng để kiểm tra các biểu thức bên trong query mà Compiler nhận được. Plan được sinh ra bởi Compiler  (thông tin về các job (map-reduce) cần thiết để thực thi query sẽ được gửi lại tới thành phần thực thi  (Bước) Execution engine nhận yêu cầu thực thi và lấy các metadata cần thiết và yêu cầu mapreduce thực thi công việc (Bước 6.1, 6.2, 6.3) Khi output được sinh ra, nó sẽ được ghi dưới dạng 1 temporary file, temorary file này sẽ cung cấp các thông tin cần thiết cho các stages khác của plan. Nội dung của các temporary file này được execution đọc trực tiếp từ HDFS như là 1 phần của các lời gọi từ Driver (bước 7, 8, 9)
  32. Khi bạn tạo mới 1 tables thì Hive  sẽ chuyển các dữ liệu này tới tới kho dữ liệu của nó (warehouse directory). Tuy nhiên bạn vẫn có thể tạo ra các external table, với khai báo thì nàythì Hive biết rằng dữ liệu dữ liệu này đã tồn tại ở trên 1 location khác bên ngoài warehouse directory.
  33. Khi bạn tạo mới 1 tables thì Hive  sẽ chuyển các dữ liệu này tới tới kho dữ liệu của nó (warehouse directory). Tuy nhiên bạn vẫn có thể tạo ra các external table, với khai báo thì nàythì Hive biết rằng dữ liệu dữ liệu này đã tồn tại ở trên 1 location khác bên ngoài warehouse directory.
  34. Trong đó: Dữ liệu trong access.log sẽ được map tới table “request” Table request gồm có 2 column là adress và info tất cả đều có kiểu là STRING. Các column được phân tách bằng nhóm ký hiệu “- -“, mỗi 1 line được đánh dấu kết thúc bằng ký hiệu “\n” Nơi chứa dữ liệu mà table request map tới là ” /user/logs/access.log"