• Stars
    star
    1,141
  • Rank 39,468 (Top 0.8 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Baidu Bigflow is an interface that allows for writing distributed computing programs and provides lots of simple, flexible, powerful APIs. Using Bigflow, you can easily handle data of any scale. Bigflow processes 4P+ data inside Baidu and runs about 10k jobs every day.

Bigflow

Bigflow 是什么?

Baidu Bigflow (以下简称 Bigflow)是百度的一套计算框架, 它致力于提供一套简单易用的接口来描述用户的计算任务,并使同一套代码可以运行在不同的执行引擎之上。

它的设计中有许多思想借鉴自 Google FlumeJava以及 Google Cloud Dataflow,另有部分接口设计借鉴自 Apache Spark

用户基本可以不去关心 Bigflow 的计算真正运行在哪里,可以像写一个单机的程序一样写出自己的逻辑, Bigflow 会将这些计算分发到相应的执行引擎之上执行。

Bigflow 的目标是: 使分布式程序写起来更简单,测起来更方便,跑起来更高效,维护起来更容易,迁移起来成本更小。

目前 Bigflow 在百度公司内部对接了公司内部的批量计算引擎 DCE(与社区 Tez 比较类似),迭代引擎 Spark,以及公司内部的流式计算引擎 Gemini。

在开源版本中,目前仅开放了Bigflow on Spark。

为什么要使用 Bigflow?

  • 高性能  Bigflow 的接口设计使得 Bigflow 可以感知更多的用户需求的细节属性,并且 Bigflow 会根据计算的属性进行作业的优化;另其执行层使用 C++ 实现,用户的一些代码逻辑会被翻译为 C++ 执行,有较大的性能提升。 在公司内部的实际业务测试来看,其性能远高于用户手写的作业。根据一些从现有业务改写过来的作业平均来看,其性能都比原用户代码提升了 100%+。开源版本的 benchmark 正在准备中。

  • 简单易用  Bigflow 的接口表面看起来很像 Spark,但实际实用之后会发现 Bigflow 使用一些独特的设计使得 Bigflow 的代码更像是单机程序,例如,屏蔽了 partitioner 的概念,支持嵌套的分布式数据集等,使得其接口更加易于理解,并且拥有更强的代码可复用性。 特别的,在许多需要优化的场景中,因为 Bigflow 可以进行自动的性能以及内存占用优化,所以用户可以避免许多因 OOM 或性能不足而必须进行的优化工作,降低用户的使用成本。

  • 在这里,Python 是一等公民  我们目前原生支持的语言是 Python。 使用 PySpark 时,有不少用户都困扰于 PySpark 的低效,或困扰于其不支持某些 CPython 库,或困扰于一些仅功能仅仅在 Scala 和 Java 中可用,在 PySpark 中暂时处于不可用状态。 而在 Bigflow 中,Python 是一等公民(毕竟当前我们仅仅支持 Python),以上问题在 Bigflow 中都不是问题,性能、功能、易用性都对 Python 用户比较友好。

在线试用

在线试用网页(passwd:bigflow) 包含了一些简单的例子介绍Bigflow的概念和API用法,同时也可以在线编写Python代码尝试Bigflow的功能,可智能提示。

注:该页面仅提供试用功能,并没有做安全防护,相关机器每隔一段时间会被清空一次,请不要做代码存储等操作。

Bigflow详细文档

Bigflow 主页

快速入门

编程指南

API 参考

编译构建

如何贡献

设计文档

论文

http://jcst.ict.ac.cn/EN/10.1007/s11390-020-9702-3

联系我们

需要加入Bigflow微信技术讨论群的,请加微信号:iacmol 或 himddheart,然后备注一下:加入Bigflow技术讨论群

More Repositories

1

amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
TypeScript
16,239
star
2

uid-generator

UniqueID generator
Java
5,329
star
3

san

A fast, portable, flexible JavaScript component framework
JavaScript
4,707
star
4

lac

百度NLP:分词,词性标注,命名实体识别,词重要性
C++
3,758
star
5

braft

An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
C++
3,499
star
6

dperf

dperf is a DPDK based 100Gbps network performance and load testing software.
C
3,273
star
7

bfs

The Baidu File System.
C++
2,845
star
8

openrasp

🔥Open source RASP solution
C++
2,680
star
9

Familia

A Toolkit for Industrial Topic Modeling
C++
2,632
star
10

AnyQ

FAQ-based Question Answering System
C++
2,566
star
11

sofa-pbrpc

A light-weight RPC implement of google protobuf RPC framework.
C++
2,120
star
12

tera

An Internet-Scale Database.
C++
1,880
star
13

Senta

Baidu's open-source Sentiment Analysis System.
Python
1,819
star
14

bfe-book

In-depth Understanding of BFE《深入理解BFE》(Book for BFE, a CNCF open source project. both in English and in Chinese)
1,212
star
15

BaikalDB

BaikalDB, A Distributed HTAP Database.
C++
1,132
star
16

DuReader

Baseline Systems of DuReader Dataset
Python
1,108
star
17

DDParser

百度开源的依存句法分析系统
Python
945
star
18

starlight

Java implementation for Baidu RPC, multi-protocol & high performance RPC.
Java
943
star
19

CUP

CUP, common useful python-lib. (Currently, Most popular python lib in baidu). Python 开发底层库, 涵盖util、service(threadpool/generator/executor/cache等等)、logging、monitoring、增强型配置 等等库支持
Python
934
star
20

ICE-BA

C++
700
star
21

NoahV

An efficient front-end application framework based on vue.js
JavaScript
638
star
22

EasyFaaS

EasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎
Go
617
star
23

Jprotobuf-rpc-socket

Protobuf RPC是一种基于TCP协议的二进制RPC通信协议的Java实现
Java
516
star
24

bifromq

A MQTT broker implementation adopting serverless architecture
Java
514
star
25

Curve

An Integrated Experimental Platform for time series data anomaly detection.
JavaScript
514
star
26

fast_rgf

Multi-core implementation of Regularized Greedy Forest
C++
466
star
27

Dialogue

Python
444
star
28

Elasticsearch

Baidu Elasticsearch
Java
432
star
29

brcc

BRCC(better remote config center)是一个分布式配置中心,用于统一管理应用服务的配置信息,避免各类资源散落在各个项目中,简化资源配置的维护成本。作为一种轻量级的解决方案,部署简单,同时支持多环境、多版本、多角色的资源管理,可以在不改变应用源码的情况下无缝切换和实时生效配置信息。
Java
383
star
30

Cafe

A powerful test framework for Android
Java
370
star
31

mix-img

A fast mix image javascript tool libary
JavaScript
332
star
32

unit-dmkit

C++
328
star
33

galaxy

Galaxy is a cluster management system.
C++
326
star
34

information-extraction

Python
325
star
35

puck

Puck is a high-performance ANN search engine
Jupyter Notebook
296
star
36

knowledge-driven-dialogue

baseline system of knowledge driven dialogue competition
Python
271
star
37

CarbonGraph

A Swift dependency injection / lookup framework for iOS
Swift
252
star
38

unit-uskit

unit-uskit
C++
251
star
39

BIPlatform

JavaScript
219
star
40

dlock

An effective and reliable Distributed Lock
Java
216
star
41

ins

iNexus, coordinate large scale services
C++
213
star
42

boteye

C++
212
star
43

titan-dex

Java
201
star
44

m-git

MGit 是一款基于 Git 的多仓库管理工具,可以安全的、高效的管理多个 Git 仓库; 适合于在多个仓库中进行关联开发的项目,实现批量的版本管理功能,提高 Git 操作的效率,避免逐个执行 Git 命令带来的误操作风险。
Ruby
166
star
45

Rubik

An Android platform component management tool chain, based on Kotlin language.
Kotlin
154
star
46

common

Common library
C++
132
star
47

go-lib

Go
126
star
48

titan-hotfix

Java
125
star
49

wx2

小程序互转工具
JavaScript
124
star
50

iot-sdk-c

device sdk for baidu IoT Core service, in c. Including MQTT client
C
118
star
51

Youtube-8M

PaddlePaddle models for Youtube-8M Video Understanding Challenge
Python
114
star
52

ar-sdk

DuMix AR SDK for Developer
GLSL
105
star
53

broc

Python
101
star
54

ITEST

Web service interface test framework
97
star
55

ote-stack

OTE-Stack is an edge computing platform for 5G and AI
Go
96
star
56

GPT

Java
87
star
57

redis

Baidu Ksarch Redis - a production solution of redis cluster
87
star
58

san-devtools

Browser developer tools extension for debugging San.
TypeScript
82
star
59

terminator

Service Virtualization
Java
76
star
60

QCompute

QCompute is a Python-based quantum software development kit (SDK). It provides a full-stack programming experience for advanced users via hybrid quantum programming language features and a high-performance simulator.
Python
76
star
61

spring-cloud-baidu

69
star
62

iot-edge-sdk-for-iot-parser

C
64
star
63

shuttle

A fast computing framework based on Galaxy
C++
64
star
64

baidu-iot-samples

C
61
star
65

san-store

Application States Management for San
JavaScript
59
star
66

ARK

Development framework of intelligent operation
Python
57
star
67

san-update

Object immutable update utility for san solution
JavaScript
56
star
68

logcover

轻量级异常日志测试覆盖率度量工具
Python
56
star
69

palo

A fast MPP database for all modern analytics on big data. Powered by Apache Doris(Incubating)
50
star
70

speech-samples

百度语音示例
Java
48
star
71

ntripcaster

C
42
star
72

san-router

Official Router for San
JavaScript
38
star
73

Quanlse

Jupyter Notebook
38
star
74

san-ssr

San SSR framework and utils
TypeScript
37
star
75

dm-kit-php

PHP
36
star
76

boteye_sensor

C
35
star
77

ipipe-agent

Java
33
star
78

OASP

OASP (Online App Status Protocol)
Java
32
star
79

san-composition

JavaScript
30
star
80

duedge-recipes

DuEdge百度边缘网络计算样例代码
JavaScript
27
star
81

paddle-on-k8s-operator

Kubernetes operator for managing the lifecycle of PaddlePaddle job.
Go
24
star
82

baiducloud-sdk-go

Go SDK for Baidu Cloud
Go
23
star
83

san-website

JavaScript
21
star
84

du1906_esp

DUHOME AIOT platform based on du1906 and esp32
C
18
star
85

highflip

HIGHFLIP: An easy way to bridge different federal learning platforms
18
star
86

baiduads-sdk

Baidu Ads API SDK
Python
16
star
87

smartapp-openapi-java

百度智能小程序服务端 OpenAPI SDK for java,是基于小程序服务端 OpenAPI 封装的一套让开发者方便使用的 SDK, 它可以帮开发者减少理解和使用 OpenAPI 的成本, 减少开发者直接调用服务端接口不当而引起的错误, 避免在开发中走弯路。
Java
16
star
88

san-factory

JavaScript
15
star
89

ttm

C
14
star
90

cluster-api-provider-baiducloud

Kubernetes cluster-api for Baidu Cloud
Go
12
star
91

minions

Baidu 100G Chasiss Switch hardware spec
11
star
92

signet

签章系统
JavaScript
10
star
93

sgxray

SGXRay: a bounded verifier for Intel SGX enclaves
C
10
star
94

grafana-tsdb-datasource

JavaScript
9
star
95

iotcore-sdk-java

Java SDK for baidu IoT Core service
Java
8
star
96

iot

for all code about Internet of Things
8
star
97

smartapp-openapi-go

百度智能小程序服务端 OpenAPI SDK for go,是基于小程序服务端 OpenAPI 封装的一套让开发者方便使用的 SDK, 它可以帮开发者减少理解和使用 OpenAPI 的成本, 减少开发者直接调用服务端接口不当而引起的错误, 避免在开发中走弯路。
Go
8
star
98

bce-fpga-dev-kit

VHDL
6
star
99

duedge-cli

DuEdge Command Line
Python
6
star
100

brcc-go-sdk

golang sdk for BRCC (https://github.com/baidu/brcc)
Go
6
star