Tech

Hadoop MapReduce Join và Counter là gì

Join trong Mapreduce là gì?

Tính toán Mapreduce Join được sử dụng để kết hợp hai tập dữ liệu lớn. Tuy nhiên, quá trình này liên quan đến việc viết rất nhiều mã để thực hiện thao tác nối thực tế. Việc kết hợp hai tập dữ liệu bắt đầu bằng cách so sánh kích thước của từng tập dữ liệu. Nếu một tập dữ liệu nhỏ hơn so với tập dữ liệu khác thì tập dữ liệu nhỏ hơn sẽ được phân phối cho mọi node dữ liệu trong cụm.

Sau khi kết hợp trong MapReduce được phân phối, Mapper hoặc Reducer sử dụng tập dữ liệu nhỏ hơn để thực hiện tra cứu các bản ghi phù hợp từ tập dữ liệu lớn và sau đó kết hợp các bản ghi đó để tạo thành các bản ghi đầu ra.

Các loại Join

Tùy thuộc vào nơi thực hiện Join thực tế, các Join trong Hadoop được phân loại thành-

1.  Map-side join  Khi join được thực hiện bởi người lập bản đồ, nó được gọi là Map-side join. Trong kiểu này, join được thực hiện trước khi dữ liệu thực sự được sử dụng bởi hàm bản đồ. Bắt buộc đầu vào cho mỗi bản đồ phải ở dạng phân vùng và được sắp xếp theo thứ tự. Ngoài ra, phải có một số lượng phân vùng bằng nhau và nó phải được sắp xếp theo khóa nối.

2.  Reduce-side join –  Khi join được thực hiện bởi reducer, nó được gọi là Reduce-side join. Trong join này không cần thiết phải có một tập dữ liệu ở dạng có cấu trúc (hoặc được phân vùng).

Ở đây, quá trình xử lý phía bản đồ phát ra khóa Join và các bộ giá trị tương ứng của cả hai bảng. Do tác động của quá trình xử lý này, tất cả các bộ dữ liệu có cùng một khóa nối sẽ rơi vào cùng một bộ rút gọn, sau đó nối các bản ghi với cùng một khóa nối.

Một luồng quy trình tổng thể của các join trong Hadoop được mô tả trong sơ đồ dưới đây.

Hadoop MapReduce Join và Counter là gì

Các kiểu Join trong Hadoop MapReduce

Cách kết hợp hai tập dữ liệu: Ví dụ về MapReduce

Có hai Bộ dữ liệu trong hai tệp khác nhau (được hiển thị bên dưới). Key Dept_ID là chung trong cả hai tệp. Mục đích là sử dụng MapReduce Join để kết hợp các tệp này

Cách tham gia 2 tập dữ liệu bằng Hadoop MapReduce

Tệp 1

Cách tham gia 2 tập dữ liệu bằng Hadoop MapReduce

Tệp 2

Đầu vào:  Tập dữ liệu đầu vào là tệp txt,  DeptName.txt & DepStrength.txt

Tải xuống tệp đầu vào từ đây

Đảm bảo bạn đã cài đặt Hadoop. Trước khi bạn bắt đầu với quy trình thực tế của ví dụ MapReduce Join, hãy thay đổi người dùng thành ‘hduser’ (id được sử dụng trong khi cấu hình Hadoop, bạn có thể chuyển sang userid được sử dụng trong quá trình cấu hình Hadoop của mình).

su – hduser_

Hadoop MapReduce Join và Counter là gì

Bước 1) Sao chép tệp zip vào vị trí bạn chọn

Hadoop MapReduce Join và Counter là gì

Bước 2) Giải nén tệp Zip

sudo tar -xvf MapReduceJoin.tar.gz

Hadoop MapReduce Join và Counter là gì

Bước 3) Vào thư mục MapReduceJoin /

cd MapReduceJoin /

Hadoop MapReduce Join và Counter là gì

Bước 4) Khởi động Hadoop

$ HADOOP_HOME / sbin / start-dfs.sh

$ HADOOP_HOME / sbin / start-yarn.sh

Hadoop MapReduce Join và Counter là gì

Bước 5) DeptStrength.txt và DeptName.txt là các tệp đầu vào được sử dụng cho chương trình ví dụ MapReduce Join này.

Tệp này cần được sao chép sang HDFS bằng lệnh dưới đây-

$ HADOOP_HOME / bin / hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

Hadoop MapReduce Join và Counter là gì

Bước 6) Chạy chương trình bằng lệnh dưới đây-

$ HADOOP_HOME / bin / hadoop jar MapReduceJoin.jar MapReduceJoin / JoinDriver / DeptStrength.txt /DeptName.txt / output_mapreducejoin

Cách tham gia 2 tập dữ liệu bằng Hadoop MapReduce
Hadoop MapReduce Join và Counter là gì

Bước 7) Sau khi thực thi, tệp đầu ra (có tên ‘part-00000’) sẽ được lưu trữ trong thư mục / output_mapreducejoin trên HDFS

Kết quả có thể được nhìn thấy bằng cách sử dụng giao diện dòng lệnh

$ HADOOP_HOME / bin / hdfs dfs -cat / output_mapreducejoin / part-00000

Hadoop MapReduce Join và Counter là gì

Kết quả cũng có thể được nhìn thấy qua giao diện web như-

Hadoop MapReduce Join và Counter là gì

Bây giờ chọn  ‘Duyệt qua hệ thống tệp’  và điều hướng đến  / output_mapreducejoin

Hadoop MapReduce Join và Counter là gì

Mở  part-r-00000

Hadoop MapReduce Join và Counter là gì

Kết quả được hiển thị

Hadoop MapReduce Join và Counter là gì

LƯU Ý: Xin lưu ý rằng trước khi chạy chương trình này vào lần tiếp theo, bạn sẽ cần phải xóa thư mục đầu ra / output_mapreducejoin

$ HADOOP_HOME / bin / hdfs dfs -rm -r / output_mapreducejoin

Cách khác là sử dụng một tên khác cho thư mục đầu ra.

Counter trong MapReduce là gì?

Một Counter trong MapReduce là một cơ chế được sử dụng để thu thập và đo lường thông tin thống kê về việc làm và các sự kiện MapReduce. Counter theo dõi các thống kê công việc khác nhau trong MapReduce như số lượng hoạt động đã xảy ra và tiến trình của hoạt động. Counter được sử dụng để chẩn đoán sự cố trong MapReduce.

Counter Hadoop tương tự như đặt thông báo nhật ký vào mã cho bản đồ hoặc thu nhỏ. Thông tin này có thể hữu ích cho việc chẩn đoán sự cố trong xử lý công việc MapReduce.

Thông thường, các Counter này trong Hadoop được xác định trong một chương trình (ánh xạ hoặc thu nhỏ) và được tăng dần trong quá trình thực thi khi một sự kiện hoặc điều kiện cụ thể (cụ thể cho Counter đó) xảy ra. Một ứng dụng rất tốt của Counter Hadoop là theo dõi các bản ghi hợp lệ và không hợp lệ từ một tập dữ liệu đầu vào.

Các loại Counter MapReduce

Về cơ bản có 2 loại Counter MapReduce

  1. Counter tích hợp Hadoop: Có một số Counter Hadoop tích hợp tồn tại cho mỗi công việc. Dưới đây là các nhóm Counter được tích hợp sẵn-
    • Counter tác vụ MapReduce – Thu thập thông tin cụ thể về tác vụ (ví dụ: số lượng bản ghi đầu vào) trong thời gian thực thi của nó.
    • Counter hệ thống tệp – Thu thập thông tin như số byte được đọc hoặc ghi bởi một tác vụ
    • Counter FileInputFormat – Thu thập thông tin về một số byte được đọc qua FileInputFormat
    • Counter FileOutputFormat  – Thu thập thông tin của một số byte được viết thông qua FileOutputFormat
    • Counter công việc –  Các Counter này được sử dụng bởi JobTracker. Số liệu thống kê do họ thu thập bao gồm ví dụ: số lượng nhiệm vụ được khởi động cho một công việc.
  2. Counter do người dùng xác định

Ngoài các Counter tích hợp sẵn, người dùng có thể xác định Counter của riêng mình bằng cách sử dụng các chức năng tương tự do ngôn ngữ lập trình cung cấp . Ví dụ, trong Java , ‘enum’ được sử dụng để xác định các Counter do người dùng xác định.

Ví dụ về Counter

Một MapClass ví dụ với Counter để đếm số lượng giá trị bị thiếu và không hợp lệ. Tệp dữ liệu đầu vào được sử dụng trong hướng dẫn này Tập dữ liệu đầu vào của chúng tôi là tệp CSV, SalesJan2009.csv

public static class MapClass

            extends MapReduceBase

            implements Mapper<LongWritable, Text, Text, Text>

{

    static enum SalesCounters { MISSING, INVALID };

    public void map ( LongWritable key, Text value,

                 OutputCollector<Text, Text> output,

                 Reporter reporter) throws IOException

    {

        //Input string is split using ‘,’ and stored in ‘fields’ array

        String fields[] = value.toString().split(“,”, -20);

        //Value at 4th index is country. It is stored in ‘country’ variable

        String country = fields[4];

        //Value at 8th index is sales data. It is stored in ‘sales’ variable

        String sales = fields[8];

            reporter.incrCounter(SalesCounters.MISSING, 1);

        } else if (sales.startsWith(“\””)) {

            reporter.incrCounter(SalesCounters.INVALID, 1);

        } else {

            output.collect(new Text(country), new Text(sales + “,1”));

        }

    }

}

Đoạn mã trên cho thấy một ví dụ về triển khai Counter trong Hadoop Map Reduce.

Ở đây, SalesCounters là một Counter được xác định bằng cách sử dụng  ‘enum’ . Nó được sử dụng để đếm   các bản ghi đầu vào MISSING  và  INVALID .

Trong đoạn mã, nếu trường  country   có độ dài bằng 0 thì giá trị của nó bị thiếu và do đó Counter tương ứng  SalesCounters.MISSING  được tăng lên.

Tiếp theo, nếu trường  sales  bắt đầu bằng dấu    thì bản ghi được coi là KHÔNG HỢP LỆ. Điều này được biểu thị bằng cách tăng dần Counter  SalesCounters.INVALID.

Back to top button
You cannot copy content of this page