Helpex - Trao đổi & giúp đỡ Đăng nhập

Xử lý cạnh IoT với Apache NiFi, MiniFi và Học sâu ...


Xử lý cạnh IoT với Apache NiFi, MiniFi và Học sâu ...

Để chuẩn bị cho bài nói chuyện của tôi về việc sử dụng các thiết bị cạnh cho Deep Learning, đọc cảm biến IoT và xử lý Dữ liệu lớn, tôi đã cập nhật môi trường của mình lên các công cụ mới nhất và tốt nhất hiện có.

Với việc nâng cấp HDF lên 3.2, giờ đây tôi có thể sử dụng Apache NiFi 1.7 và MiniFi 0.5 để nhập dữ liệu IoT, xử lý sự kiện đơn giản, chuyển đổi, xử lý dữ liệu, lưu lượng dữ liệu và lưu trữ.

Sơ đồ kiến ​​trúc ở trên cho thấy dòng chảy cơ bản mà chúng ta đang sử dụng.

Từng bước một

  1. Raspberry Pi với các bản vá mới nhất, Python, phần mềm GPS, Camera USB, thư viện cảm biến, Java 8, MiniFi 0.5, TensorFlow và Apache MXNet được cài đặt.
  2. Luồng Minifi đẩy JSON và JPEG qua HTTP (s) / Site-to-Site đến máy chủ cổng Apache NiFi.
  3. Tùy chọn: NiFi có thể đẩy sang cụm đám mây trung tâm NiFi và / hoặc cụm Kafka cả hai đều chạy trên môi trường HDF 3.2.
  4. Cụm Apache NiFi đẩy lên API Hive, HDFS, Dockerized chạy trong HDP 3.0 và API của bên thứ ba.
  5. NiFi và Kafka tích hợp với Schema Registry cho dữ liệu dạng bảng của chúng tôi bao gồm dữ liệu JSON của cầu vồng và gps.

Các bảng SQL trong Hive

Tôi truyền dữ liệu của mình vào các tệp ORC của Apache được lưu trữ trên các thư mục HDFS 3.0 HDFS và xây dựng các bảng bên ngoài trên chúng.

CREATE EXTERNAL TABLE IF NOT EXISTS rainbow (tempf DOUBLE, cputemp DOUBLE, pressure DOUBLE, host STRING, uniqueid STRING, ipaddress STRING, temp DOUBLE, diskfree STRING, altitude DOUBLE, ts STRING, 
 tempf2 DOUBLE, memory DOUBLE) 
STORED AS ORC LOCATION '/rainbow';

CREATE EXTERNAL TABLE IF NOT EXISTS gps (speed STRING, diskfree STRING, altitude STRING, ts STRING, cputemp DOUBLE, latitude STRING, track STRING, memory DOUBLE, host STRING, uniqueid STRING, ipaddress STRING, epd STRING, utc STRING, epx STRING, epy STRING, epv STRING, ept STRING, eps STRING, longitude STRING, mode STRING, time STRING, climb STRING, epc STRING) 
STORED AS ORC LOCATION '/gps';

Đối với nhu cầu xử lý của tôi, tôi cũng có bảng HID 3 ACID để sử dụng và cập nhật bảng chung.

create table rainbowacid(tempf DOUBLE, cputemp DOUBLE, pressure DOUBLE, host STRING, uniqueid STRING, ipaddress STRING, temp DOUBLE, diskfree STRING, altitude DOUBLE, ts STRING, 
                                             tempf2 DOUBLE, memory DOUBLE) STORED AS ORC 
                        TBLPROPERTIES ('transactional'='true');

CREATE TABLE IF NOT EXISTS gpsacid (speed STRING, diskfree STRING, altitude STRING, ts STRING, cputemp DOUBLE, latitude STRING, track STRING, memory DOUBLE, host STRING, uniqueid STRING, ipaddress STRING, epd STRING, utc STRING, epx STRING, epy STRING, epv STRING, ept STRING, eps STRING, longitude STRING, mode STRING, time STRING, climb STRING, epc STRING) STORED AS ORC
                        TBLPROPERTIES ('transactional'='true');

Sau đó tôi tải dữ liệu ban đầu của mình.

insert into rainbowacid
select * from rainbow;

insert into gpsacid 
select * from gps;

Xử lý cạnh IoT với Apache NiFi, MiniFi và Học sâu ...

Cập nhật Hive 3.x

%jdbc(hive) CREATE TABLE Persons_default (
    ID Int NOT NULL,
    Name String NOT NULL,
    Age Int,
    Creator String DEFAULT CURRENT_USER(),
    CreateDate Date DEFAULT CURRENT_DATE()
)

Một trong những tính năng mới thú vị trong Hive là giờ đây bạn có thể có các mặc định, như bạn có thể thấy, rất hữu ích cho những thứ như mặc định tiêu chuẩn mà bạn có thể muốn như dữ liệu hiện tại. Điều này cung cấp cho chúng tôi nhiều tính năng phong cách quan hệ hơn trong Hive.

Một tính năng rất thú vị khác là các khung nhìn cụ thể hóa giúp bạn có các truy vấn con sạch và nhanh. Đây là một ví dụ thú vị:

CREATE MATERIALIZED VIEW mv1
AS
SELECT dest,origin,count(*)
FROM flights_hdfs 
GROUP BY dest,origin

Cảm ơn, và cho tôi biết suy nghĩ của bạn trong phần bình luận!

3 hữu ích 0 bình luận 4.9k xem chia sẻ

Có thể bạn quan tâm

loading