Thiết lập AWS Redshift cho kho dữ liệu đám mây

theanh

Administrator
Nhân viên
Trong hướng dẫn này, tôi sẽ giải thích và hướng dẫn cách thiết lập AWS Redshift để sử dụng Cloud Data Warehousing. Redshift là dịch vụ kho dữ liệu petabyte được quản lý hoàn toàn đang được Amazon Web Services giới thiệu trên đám mây. Dịch vụ này hoạt động bằng cách kết hợp một hoặc nhiều bộ sưu tập tài nguyên điện toán được gọi là các nút, được tổ chức thành một nhóm, một cụm. Mỗi cụm chạy một công cụ Redshift và có thể chứa một hoặc nhiều cơ sở dữ liệu. Về cơ bản, kiến trúc có thể được triển khai như sau:






1. Nó hoạt động như thế nào​

Về cơ bản, Redshift dựa trên PostgreSQL làm công cụ cốt lõi của nó, vì vậy hầu hết các ứng dụng SQL đều có thể hoạt động với Redshift. Redshift cũng có thể được tích hợp với nhiều ứng dụng khác nhau bao gồm BI, phân tích và các công cụ ETL (Trích xuất, Chuyển đổi, Tải) cho phép các nhà phân tích hoặc kỹ sư làm việc với dữ liệu chứa trong đó.

Khi người dùng thiết lập kho dữ liệu Amazon Redshift, họ có một cấu trúc cốt lõi cho các hoạt động được gọi là cụm. Một cụm Redshift bao gồm 1 hoặc nhiều nút tính toán. Nếu người dùng chọn sử dụng nhiều hơn một nút tính toán, Redshift sẽ tự động khởi động một nút chính. Nút dẫn đầu này được thiết lập để nhận các yêu cầu và lệnh từ phía thực thi của máy khách và không được AWS tính phí.

Các ứng dụng máy khách chỉ giao tiếp với nút dẫn đầu. Các nút tính toán bên dưới nút dẫn đầu là trong suốt đối với người dùng. Khi khách hàng thực hiện truy vấn, nút dẫn đầu sẽ phân tích truy vấn và tạo kế hoạch thực hiện tối ưu để thực hiện trên các nút tính toán, có tính đến lượng dữ liệu được lưu trữ trên mỗi nút.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập và cấu hình Redhift để chúng ta sử dụng. Trong ví dụ này, tôi sẽ tạo một tài khoản và bắt đầu với gói miễn phí.

2. Giai đoạn cấu hình​

2.1 Điều kiện tiên quyết​

Trước khi chúng ta bắt đầu thiết lập cụm Amazon Redshift, có một điều kiện tiên quyết nhất định cần phải hoàn thành.

Đầu tiên, hãy đăng ký AWS, sau khi hoàn tất, hãy chuyển đến dịch vụ IAM để tạo một vai trò mà chúng ta có thể sử dụng để sử dụng Redshift. Bạn có thể làm theo ảnh chụp màn hình như bên dưới:















Sau khi hoàn tất, bạn sẽ nhận được ảnh chụp màn hình như bên dưới cho biết vai trò đã được tạo thành công.


2.2 Thiết lập Cấu hình Redshift​

Khi các điều kiện tiên quyết đã hoàn tất, chúng ta có thể tiến hành tạo Redshift Cluster của riêng mình. Tìm kiếm các tính năng Redshift trong ngăn tìm kiếm và tiến hành từ đó. Dưới đây là ví dụ về ảnh chụp màn hình:





Nhấp vào nút Create Cluster và tiến hành với các biến cần thiết, lưu ý rằng ở phía Cluster Permission, chúng tôi bao gồm vai trò IAM mà chúng tôi đã tạo trước đó.















Sau khi hoàn tất, bạn sẽ thấy bảng điều khiển redshift như trên. Đối với hướng dẫn này, chúng tôi sẽ vô hiệu hóa lớp bảo mật mạng bằng cách thay đổi nhóm bảo mật. Để thực hiện việc đó, hãy đi đến cuối bảng điều khiển và thêm cổng Redshift vào tab Inbound. Dưới đây là một ví dụ:









Sau khi hoàn tất, bạn sẽ thấy cụm mới mà bạn đã tạo hiện đã có thể sử dụng.


3. Giai đoạn thử nghiệm​

Bây giờ, chúng ta hãy thử truy cập kho dữ liệu của mình. Để thử nghiệm, hãy nhấp vào EDITOR trên ngăn bên trái, bao gồm các biến cần thiết, sau đó nhấp vào Connect to database





Bạn sẽ được đưa đến trang biên tập, bây giờ chúng ta hãy bắt đầu bằng cách tạo lược đồ thử nghiệm của riêng mình. Tạo lược đồ theo bên dưới rồi thực thi lược đồ đó.





Tuyệt, bây giờ chúng ta hãy thử nghiệm ở phía máy khách cục bộ. Để thực hiện điều đó, bạn cần có kết nối JDBC hoặc ODBC từ phía Redshift. Để có thông tin đó, hãy nhấp vào nút Config ở ngăn bên trái của bảng điều khiển.

Chọn loại kết nối bạn thích, sau đó tải xuống các thư viện cần thiết và sao chép URL như trong ví dụ bên dưới:





Tiếp theo, hãy mở bất kỳ công cụ máy khách SQL nào của bạn và nhập các biến kết nối cần thiết. Trong ví dụ ở đây, chúng tôi đang sử dụng tên công cụ máy khách SQL DBeaver có thể lấy từ tại đây







Kết nối của bạn sẽ thành công như mong đợi. Trong bất kỳ trường hợp nào, nếu bạn gặp phải sự cố xác thực, hãy kiểm tra cấu hình của bạn được thực hiện trong nhóm bảo mật AWS để biết thêm chi tiết.

Tiếp theo, hãy tạo một tập hợp các bảng theo lược đồ mới tạo trước đó của chúng ta. Dưới đây là một ví dụ về việc tạo bảng mà chúng ta sẽ thực thi trong cụm của mình:
Mã:
 SET search_path = imdb; 

create table users( 
userid integer not null distkey sortkey, 
username char(8), 
firstname varchar(30), 
lastname varchar(30), 
city varchar(30), 
state char(2), 
email varchar(100), 
phone char(14), 
likesports boolean, 
liketheatre boolean, 
likeconcerts boolean, 
likejazz boolean, 
likeclassical boolean, 
likeopera boolean, 
likerock boolean, 
likevegas boolean, 
likebroadway boolean, 
likemusicals boolean); 

tạo bảng venue( 
venueid smallint không null distkey sortkey, 
venuename varchar(100), 
venuecity varchar(30), 
venuestate char(2), 
venueseats integer); 

tạo bảng category( 
catid smallint không null distkey sortkey, 
catgroup varchar(10), 
catname varchar(10), 
catdesc varchar(50)); 

tạo bảng date( 
dateid smallint không null distkey sortkey, 
caldate ngày không null, 
ký tự ngày(3) không null, 
tuần smallint không null, 
ký tự tháng(5) không null, 
ký tự qtr(5) không null, 
năm smallint không null, 
ngày lễ boolean default('N')); 

tạo bảng sự kiện ( 
eventid số nguyên không null distkey, 
venueid smallint không null, 
catid smallint không null, 
dateid smallint không null sortkey, 
eventname varchar(200), 
starttime timestamp); 

tạo bảng danh sách ( 
listid số nguyên không null distkey, 
sellerid số nguyên không null, 
eventid số nguyên không null, 
dateid smallint không null sortkey, 
numtickets smallint không null, 
priceperticket thập phân (8,2), 
totalprice thập phân (8,2), 
listtime timestamp); 

create table sales( 
salesid integer not null, 
listid integer not null distkey, 
sellerid integer not null, 
buyerid integer not null, 
eventid integer not null, 
dateid smallint not null sortkey, 
qtysold smallint not null, 
pricepaid decimal(8,2), 
commission decimal(8,2), 
saletime timestamp);
Kết quả mong đợi sẽ hiển thị như bên dưới:-







Tiếp theo, chúng ta hãy thử tải dữ liệu mẫu lên kho dữ liệu của mình. Đối với ví dụ này, tôi đã tải một dữ liệu mẫu lên thùng S3 của riêng tôi, sau đó sử dụng tập lệnh bên dưới để sao chép dữ liệu từ tệp S3 vào Redshift.


Mã:
sao chép doanh số từ 's3://shahril-redshift01-abcde/sales_tab.txt' 
iam_role 'arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role' 
dấu phân cách '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region 'eu-west-1'; 

sao chép ngày từ 's3://shahril-redshift01-abcde/date2008_pipe.txt' 
iam_role 'arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role' 
dấu phân cách '|' vùng 'eu-west-1';
Nếu trong quá trình tải, bạn gặp phải sự cố, bạn có thể truy vấn từ bảng từ điển redshift có tên stl_load_errors như bên dưới để biết gợi ý về sự cố.
Mã:
 select * from stl_load_errors ;




Cuối cùng, sau khi hoàn tất mọi thứ, bạn sẽ có thể trích xuất và thao tác dữ liệu bằng bất kỳ hàm SQL nào được cung cấp. Dưới đây là một số ví dụ về tập lệnh truy vấn mà tôi đã sử dụng cho ví dụ của chúng tôi.
Mã:
-- Lấy định nghĩa cho bảng doanh số. 
SELECT * 
FROM pg_table_def 
WHERE tablename = 'sales'; 

-- Tìm tổng doanh số bán hàng mỗi ngày 
SELECT b.caldate days, sum(a.qtysold) FROM sales a, dates b 
WHERE a.dateid = b.dateid 
group by b.caldate ; 

-- Tìm 10 người mua hàng đầu theo số lượng. 
CHỌN tên, họ, tổng số lượng 
TỪ (CHỌN id người mua, tổng(số lượng đã bán) tổng số lượng 
TỪ doanh số 
NHÓM THEO id người mua 
SẮP XẾP THEO tổng số lượng giới hạn 10) Q, người dùng 
NƠI Q.buyerid = userid 
SẮP XẾP THEO Q.tổng số lượng giảm; 

-- Tìm các sự kiện trong khoảng phần trăm thứ 99,9 về tổng doanh số bán hàng mọi thời đại. 
SELECT eventname, total_price 
FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile 
FROM (SELECT eventid, sum(pricepaid) total_price 
FROM sales 
GROUP BY eventid)) Q, event E 
WHERE Q.eventid = E.eventid 
AND percentile = 1 
ORDER BY total_price desc;


Thích quá! giờ chúng ta đã thiết lập thành công Redshift Cluster của riêng mình để sử dụng kho dữ liệu. Tiếp theo, chúng ta sẽ xem xét kết hợp dữ liệu hiện có trong Redshift Cluster với bất kỳ tệp phẳng nào sử dụng Redshift Spectrum.
 
Back
Bên trên