TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN Đề tài: Phân loại khách hàng theo ngành nghề của công ty bằng Hadoop Môn học: Xử Lý Dữ Liệu Lớn
Trang 1TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
Đề tài: Phân loại khách hàng theo ngành nghề của công ty bằng Hadoop
Môn học: Xử Lý Dữ Liệu Lớn Lớp: DH11C8
Nhóm sinh viên thực hiện: Đỗ Văn Anh
Phạm Thị Chinh Nguyễn Thế Quang Ngô Thế Vinh
Giảng Viên Hướng Dẫn: Phí Thị Hải Yến
Hà Nội, ngày 11 tháng 11 năm 2024
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 3
CHƯƠNG 1: TỔNG QUAN XÂY DỰNG HỆ THỐNG 3
1.1 Tổng quan đề tài 4
1.1.1 Mục tiêu chung 4
1.1.2 Mục tiêu cụ thể 4
1.1.3 Ý nghĩa của đề tài 4
1.2 Tổng quan hệ thống 5
1.2.1 Hadoop HDFS 5
1.2.2 Hadoop MapReduce Java 5
1.2.3 Elasticsearch 6
1.2.4 Kibana 6
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH VÀ HỆ THỐNG 8
2.1 Thu thập và chuẩn bị dữ liệu 8
2.2 Bài toán phân tích 9
2.3 Luồng dữ liệu của hệ thống 9
2.4 Tổng quan các bước làm 10
2.5 Xây dựng chương trình Hadoop Mapreducer 14
2.5.1 Tỉ lệ và số lượng khách hàng theo từng nhóm công ty 15
2.5.2 Tỉ lệ và số lượng khách hàng có công ty đa quốc gia 16
2.5.3 Tỉ lệ và số lượng khách hàng cùng công ty 18
2.5.4 Tỉ lệ và số lượng khách hàng ngành nghề đang phổ biến 20
2.6 Lưu trữ và truy vấn với Elasticsearch 22
2.7 Trực quán hóa với Kibana 25
Trang 3TÀI LIỆU THAM KHẢO 29
1 Hướng dẫn sử dụng Hadoop để phân tích dữ liệu 30
2 Hướng dẫn sử dụng Elasticsearch, Kibana 30
LỜI NÓI ĐẦU
Trong bối cảnh kinh tế hiện đại, dữ liệu ngày càng trở thành tài sản quý giácủa các doanh nghiệp Các công ty không chỉ cần thu thập thông tin từ khách hàng
mà còn cần khả năng phân tích dữ liệu để thấu hiểu và tối ưu hóa chiến lược kinhdoanh của mình Việc phân loại khách hàng theo ngành nghề là một bước quantrọng giúp doanh nghiệp hiểu rõ hơn về các phân khúc thị trường mà mình đangphục vụ, từ đó xây dựng các chiến lược tiếp thị và bán hàng phù hợp
Hadoop, một trong những nền tảng xử lý dữ liệu lớn phổ biến, đóng vai tròquan trọng trong việc xử lý và phân tích các tập dữ liệu khổng lồ với tốc độ nhanhchóng và hiệu quả Trong đề tài này, chúng tôi sẽ sử dụng Hadoop để phân loạikhách hàng theo ngành nghề, giúp doanh nghiệp xác định phân khúc khách hàngdựa trên lĩnh vực kinh doanh của họ Kết quả của quá trình phân tích sẽ mang lạinhững thông tin quan trọng cho việc đưa ra quyết định chiến lược
Trang 4CHƯƠNG 1: TỔNG QUAN XÂY DỰNG HỆ THỐNG
1.1 Tổng quan đề tài
1.1.1 Mục tiêu chung
Mục tiêu chung của đề tài là sử dụng nền tảng Hadoop để xử lý dữ liệukhách hàng và thực hiện phân tích, phân loại khách hàng theo ngành nghề củacông ty Qua đó, đề tài sẽ cung cấp một bức tranh tổng quan về sự phân bố của cáckhách hàng theo từng ngành nghề, tạo cơ sở để xây dựng các chiến lược marketing
1.1.3 Ý nghĩa của đề tài
Đề tài này mang ý nghĩa thiết thực trong việc ứng dụng công nghệ phân tích
dữ liệu lớn vào thực tiễn quản lý doanh nghiệp Việc phân loại khách hàng theongành nghề không chỉ giúp tối ưu hóa chiến lược kinh doanh mà còn giúp doanhnghiệp hiểu sâu hơn về nhu cầu và đặc điểm của từng phân khúc thị trường Điềunày góp phần cải thiện mối quan hệ với khách hàng và nâng cao hiệu quả kinhdoanh
Trang 51.2 Tổng quan hệ thống
Hệ thống được xây dựng gồm 4 phần với các chức năng nhằm thu thập, xử lý, lưutrữ và trực quan hoá dữ liệu từ file dữ liệu lớn dạng (csv).Các thành phần bao gồmHadoops hsfs, hadoop mapreducer, Elasticsearch, Kibana
1.2.1 Hadoop HDFS
Hadoop HDFS (Hadoop Distributed File System) là thành phần đầu tiên của hệthống, chịu trách nhiệm lưu trữ dữ liệu lớn liên quan đến vi phạm giao thông Hệthống cho phép dữ liệu được phân tán trên nhiều máy chủ (nodes), giúp tăngcường khả năng lưu trữ và bảo mật thông tin Dữ liệu về vi phạm giao thông, baogồm các yếu tố như độ tuổi, giới tính và tình trạng sức khỏe, sẽ được lưu trữ mộtcách an toàn và dễ dàng truy cập khi cần thiết cho các phân tích sau này
HDFS không chỉ đảm bảo tính toàn vẹn của dữ liệu mà còn cho phép mở rộnglinh hoạt, giúp quản lý và xử lý dữ liệu lớn một cách hiệu quả
Trang 61.2.2 Hadoop MapReduce Java
Phần thứ hai của hệ thống là Hadoop MapReduce, một mô hình lập trình mạnh
mẽ dùng để xử lý dữ liệu lớn Với Hadoop MapReduce, các tác vụ phân tích phứctạp có thể được thực hiện thông qua hai giai đoạn chính: Map (bản đồ) và Reduce(giảm) Trong giai đoạn Map, dữ liệu về vi phạm giao thông sẽ được phân tích và
xử lý, còn trong giai đoạn Reduce, các kết quả sẽ được tổng hợp và tạo ra thông tinhữu ích
Sử dụng Java làm ngôn ngữ lập trình, Hadoop MapReduce giúp thực hiện cácphân tích sâu về độ tuổi, giới tính và tình trạng sức khỏe của những người vi phạmgiao thông do rượu bia Những thông tin này sẽ cung cấp cái nhìn tổng quan về cácnhóm đối tượng có nguy cơ cao, từ đó hỗ trợ các biện pháp phòng ngừa và cảithiện an toàn giao thông
1.2.3 Elasticsearch
Elasticsearch là phần thứ ba của hệ thống, có chức năng lập chỉ mục và lưu trữkết quả phân tích từ Hadoop Đây là công cụ tìm kiếm và phân tích mạnh mẽ, chophép tổ chức và truy xuất thông tin một cách nhanh chóng và hiệu quả.Elasticsearch giúp các nhà quản lý và cơ quan chức năng dễ dàng tìm kiếm, theodõi và phân tích thông tin vi phạm giao thông, từ đó đưa ra các quyết định kịp thời.Việc sử dụng Elasticsearch không chỉ cải thiện tốc độ truy vấn mà còn giúp tối
ưu hóa khả năng xử lý dữ liệu lớn, đáp ứng nhu cầu phân tích phức tạp trong việcquản lý an toàn giao thông
1.2.4 Kibana
Kibana là thành phần trực quan hóa dữ liệu của hệ thống Nó cung cấp giaodiện người dùng thân thiện, cho phép hiển thị kết quả phân tích qua các biểu đồ, đồ
Trang 7và phân tích các thông tin về vi phạm giao thông do rượu bia một cách trực quan vàhiệu quả.
Kibana hỗ trợ việc tạo ra các báo cáo và hình ảnh hóa dữ liệu từ Elasticsearch,giúp người dùng nhanh chóng nhận diện các xu hướng, mẫu hành vi và thông tinquan trọng liên quan đến vi phạm giao thông, qua đó nâng cao nhận thức và cảithiện các chính sách an toàn giao thông
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH VÀ HỆ THỐNG 2.1 Thu thập và chuẩn bị dữ liệu
Trong quá trình thực hiện dự án, việc thu thập dữ liệu là một bước quan trọng
để đảm bảo tính chính xác và đầy đủ của các phân tích sau này Dữ liệu được thuthập từ hệ thống quản lý nhân sự, công ty và nhiều nguồn khác Dưới đây là mô tảchi tiết về các trường dữ liệu được thu thập được ở file CSV:
Hình 2.1: Một số dữ liệu trong file dữ liệu lớn
Trang 82.2 Bài toán phân tích
Sử dụng chương trình Hadoop MapReduce để Xây dựng một hệ thống phân tích dữ liệu từ cột `Company` bằng Hadoop để nhóm khách hàng theo ngành nghềcủa công ty và xác định phân khúc khách hàng theo ngành
Các phân tích cần thực hiện:
- Tỉ lệ và số lượng khách hàng theo từng nhóm công ty
- Tỉ lệ và số lượng khách hàng có công ty đa quốc gia
- Tỉ lệ và số lượng khách hàng cùng công ty
- Tỉ lệ và số lượng khách hàng ngành nghề đang phổ biến
2.3 Luồng dữ liệu của hệ thống
Trang 9Hình 2.2: Luồng dữ liệu xử lý
Luồng dữ liệu của hệ thống chúng em xây dựng gồm 4 quá trình:
- Thu thập dữ liệu (dạng file CSV trên website )
- Lưu dữ liệu vào Hadoop HDFS đặt tên là input
- Tạo Project xulydulieulon để tạo các chương trình phân tích từ dữ liệu tronginput và xuất ra kết quả output và lưu trong HDFS gửi lưu vào Elasticsearch
- Biểu diễn dữ liệu trên Elasticsearch dưới dạng biểu đồ, đồ thị, danh sáchbảng sử dụng Kibana
2.4 Tổng quan các bước làm
Chuẩn bị 3 máy ảo, 1 máy Masternode và 2 máy Datanode:
- Khởi động hệ thống HDFS, Elasticsearch và Kibana HDFS, Kibana chạy trên masternode, Elasticsearch chạy trên cả 3 máy
Trang 10Hình 2.3: Khởi động hệ thống HDFS, Elasticsearch, Kibana
Hình 2.4: Khởi chạy thành công Hadoop trên 3 máy
- Tạo nơi lưu trữ dữ liệu file dữ liệu và dự án
Trang 11Hình 2.5: Tạo nơi lưu trữ dữ liệu dự án
Hình 2.6: Sao chép file dữ liệu lớn lên HDFS
- Xây dựng chương trình Hadoop Mapreduce bằng Java
Trang 12Hình 2.7: Sử dụng Java để tạo file jar, class
Hình 2.8: Kết quả sau khi chạy chương trình Hadoop Mapreduce bằng Java
- Sử dụng ngôn ngữ Python để đẩy dữ liệu lên Elasticsearch
Hình 2.9: Đẩy dữ liệu lên Elasticsearch
- Sử dụng Kibana để thực hiện hóa dữ liệu
Trang 13Hình 2.10: Giao diện Kibana
Hình 2.11: Thông tin máy sử dụng Elasticsearch
2.5 Xây dựng chương trình Hadoop Mapreducer
Trang 14Sau khi khởi động các phần mềm cần thiết và lưu trữ thành công dữ liệu lênHadoopCluster, chúng ta tiến hành sử dụng ngôn ngữ lập trình Java để thực hiệnphân tích dữ liệu dựa trên các tiêu chí đã đề ra ở phần trước.
2.5.1 Tỉ lệ và số lượng khách hàng theo từng nhóm công ty
Trong file dữ liệu lớn ta có thể thấy có rất nhiều công ty có LLC, Ltd, Inc,PLC, Group, and Từ đó ta nhóm các công ty này lại được như sau:
- LLC, Ltd, Inc thuộc nhóm “Công ty Trách nhiệm hữu hạn”
- PLC, Group thuộc nhóm “Tập đoán”
- and thuộc nhóm công ty “Liên doan hoặc Hợp tác”
- Các công ty còn lại được để vào nhóm “Khác”
Kết quả đạt được:
Hình 2.12: Số lượng công ty theo từng nhóm
Trang 15Từ file dữ liệu được trả về ta có thể nhìn thấy rất nhiều khách hàng thuộcnhóm “Công ty Trách nhiệm hữu hạn”, các công ty này chủ yếu chuyên về mộtngành nghề “Tập đoàn” nhóm khách hàng thuộc các công ty có quy mô lớn hơn,thường là các tập đoàn lớn “Liên doanh hoặc Hợp tác” công ty hoạt động dướidạng liên doanh hoặc hợp tác với các công ty khác Phần đông khách hàng thuộcnhóm “Khác” là các công ty không thuộc ba loại phân khúc trên, có thể là các loạihình công ty ít phổ biến hơn hoặc có cấu trúc đặc biệt.
2.5.2 Tỉ lệ và số lượng khách hàng có công ty đa quốc gia
Mục đích:
- Mục tiêu của phân tích này là phân loại khách hàng theo ngành nghề củacông ty để hiểu rõ hơn về cách thức công ty và khách hàng của họ phân bổ trêntoàn cầu
- Bằng cách sử dụng Hadoop để xử lý dữ liệu từ cột Company, chúng ta cóthể nhóm khách hàng theo ngành nghề của công ty và phân tích phạm vi ảnhhưởng toàn cầu của từng ngành
- Kết quả này hỗ trợ xác định phân khúc khách hàng theo ngành, từ đó giúpphát triển các chiến lược tiếp thị, tối ưu hóa dịch vụ và mở rộng sản phẩm cho từngthị trường cụ thể
Trang 16Kết luận:
- Xuất hiện ở 1 quốc gia (32,535 công ty): Phần lớn các công ty chỉ xuấthiện tại một quốc gia Điều này cho thấy rằng hầu hết các công ty trong dữ liệu nàyhoạt động cục bộ và không có sự hiện diện quốc tế Đây thường là các doanhnghiệp vừa và nhỏ, hoặc các ngành chỉ phục vụ nhu cầu nội địa
- Xuất hiện từ 2 đến 10 quốc gia (6,242 công ty): Nhóm này bao gồm cáccông ty có một số hoạt động quốc tế, có thể là các doanh nghiệp mở rộng ra khuvực gần kề hoặc có thị trường tiềm năng tại một vài quốc gia Đây là các công tyđang có xu hướng mở rộng nhưng vẫn chưa đạt đến quy mô toàn cầu
- Xuất hiện từ 10 đến 20 quốc gia (146 công ty): Đây là nhóm công ty có sự
Trang 17Nhóm này có thể là các công ty đa quốc gia, với khả năng phục vụ nhiều thị trườngnhưng tập trung vào các khu vực nhất định.
- Xuất hiện ở hơn 20 quốc gia (989 công ty): Các công ty này có sự hiện diệnđáng kể trên toàn cầu và có khả năng là các tập đoàn lớn hoạt động trên nhiều quốcgia Sự hiện diện quốc tế mạnh mẽ cho thấy khả năng cạnh tranh cao, sức ảnhhưởng rộng và khả năng đáp ứng nhu cầu toàn cầu
2.5.3 Tỉ lệ và số lượng khách hàng cùng công ty
Mục đích:
- Mục tiêu chính của bài toán là phân loại và đếm số lượng khách hàng theotừng công ty, từ đó hiểu rõ hơn về sự phân bố khách hàng đối với từng doanhnghiệp
- Thông qua việc đếm số lượng khách hàng trên mỗi công ty và sắp xếp kếtquả theo số lượng khách hàng tăng dần, chúng ta có thể xác định các công ty cónhiều khách hàng nhất và nhóm các công ty nhỏ (chỉ có 1 khách hàng) lại thànhmột nhóm riêng biệt
- Kết quả này giúp doanh nghiệp hoặc tổ chức có cái nhìn tổng quan về sốlượng khách hàng mà mỗi công ty sở hữu, từ đó đưa ra các chiến lược kinh doanhhoặc tiếp cận khách hàng phù hợp
Trang 18Kết luận:
- Các công ty có số lượng khách hàng lớn (ví dụ: Công ty Wolf, Yu, Zhang,Watts, Whitehead, ) là những công ty có sức hút mạnh hoặc có quy mô lớn trongngành của mình, thu hút được lượng lớn khách hàng Đây là những công ty tiềmnăng cho việc đầu tư hoặc hợp tác lâu dài
- Nhóm các công ty còn lại với chỉ một khách hàng duy nhất cho thấy sựhiện diện của rất nhiều công ty nhỏ lẻ hoặc có ít sự ảnh hưởng đến thị trường.Nhóm này có thể đại diện cho các doanh nghiệp mới hoặc các doanh nghiệp phục
vụ một số khách hàng chuyên biệt
Trang 192.5.4 Tỉ lệ và số lượng khách hàng ngành nghề đang phổ biến
- Kết quả này hỗ trợ xác định phân khúc khách hàng theo ngành, từ đó giúpphát triển các chiến lược tiếp thị, tối ưu hóa dịch vụ và mở rộng sản phẩm cho từngthị trường cụ thể
Trang 20Kết luận:
- Ngành Bán lẻ với số lượng công ty là 249: Đây là phân khúc khách hàngtương đối lớn nhưng không phải là ngành trọng tâm Với số lượng công ty ở mứcvừa phải, ngành bán lẻ có thể mang lại cơ hội tiếp thị và phát triển khách hàng ổnđịnh Các công ty trong ngành này thường cần dịch vụ hỗ trợ khách hàng, tư vấn và
có khả năng yêu cầu sản phẩm đa dạng
- Ngành Thực phẩm với số lượng công ty là 1992: Đây là phân khúc lớnnhất trong cơ sở khách hàng, chiếm tỷ lệ rất cao Ngành thực phẩm bao gồm cáccông ty như sản xuất, phân phối và bán lẻ thực phẩm, nhà hàng, quán cafe, và cácdịch vụ liên quan Với số lượng khách hàng lớn, doanh nghiệp có thể tập trung vàoviệc cung cấp các giải pháp chuyên biệt cho ngành thực phẩm như quản lý chuỗi
Trang 21- Ngành Năng lượng với số lượng công ty là 349: Ngành này chiếm tỷ lệnhỏ hơn so với ngành thực phẩm nhưng có tiềm năng đáng kể Các công ty trongngành năng lượng thường có nhu cầu cao về công nghệ, các giải pháp tiết kiệmnăng lượng, tối ưu hóa quy trình và đảm bảo an toàn Phân khúc này có thể đượcnhắm đến với các sản phẩm và dịch vụ chuyên biệt liên quan đến công nghệ và bảo
vệ môi trường
- Ngành Công nghệ có 2479 công ty: Công nghệ là một lĩnh vực đang pháttriển mạnh và thu hút nhiều khách hàng Các công ty công nghệ thường có nhu cầucao về các dịch vụ đổi mới, linh hoạt và hỗ trợ kỹ thuật Đầu tư vào phân khúc này
có thể giúp doanh nghiệp thu hút thêm khách hàng có tiềm năng phát triển trongtương lai
- Ngành Kinh tế có 115 công ty: Các công ty trong ngành Kinh tế, tài chínhthường yêu cầu các dịch vụ ổn định và bảo mật cao Doanh nghiệp có thể cung cấpcác giải pháp đáp ứng các tiêu chuẩn an toàn cao cho phân khúc này
- Khác có 9000 công ty: Đây là nhóm ngành lớn nhất và chưa được phânloại cụ thể Con số này cho thấy rằng phần lớn khách hàng chưa rơi vào các ngànhnghề chính được phân loại Để hiểu rõ hơn về các công ty trong nhóm này, cầnphân tích thêm để tìm ra các nhóm ngành nhỏ hoặc sử dụng từ khóa chi tiết hơn
Có thể đây là một phân khúc tiềm năng nếu doanh nghiệp có thể xác định chínhxác nhu cầu chung của các công ty trong nhóm "Khác" này
2.6 Lưu trữ và truy vấn với Elasticsearch
Sau khi thực hiện phân tích dữ liệu bằng chương trình Hadoop Mapreduce,chúng ta tiến hành gửi kết quả đã phân tích đến ElasticSearch để phục vụ cho việcthiết kế các sơ đồ biểu diễn dữ liệu trực quan bằng ngôn ngữ Python
- Đẩy dữ liệu tỉ lệ và số lượng khách hàng theo từng nhóm công ty
Trang 22-Tỉ lệ và số lượng khách hàng có công ty đa quốc gia
Trang 23- Đẩy dữ liệu tỉ lệ và số lượng khách cùng công ty
- Đẩy dữ liệu tỉ lệ và số lượng khách hàng của từng nhóm ngành nghề phổ biến
Trang 242.7 Trực quán hóa với Kibana
- Tỉ lệ và số lượng khách hàng theo từng nhóm công ty
- Tỉ lệ và số lượng khách hàng có công ty đa quốc gia