摘要:雖說微軟的Windows系統是伴隨我們已久的老朋友了,大多數人都是一代一代Windows的用上來。然而,很多程序員內心中都有一個蘋果情懷,使用mac系統是很多程序員心中的一個燈塔。那么,為什么很多程序員喜歡用mac系統,而不是windows,究竟怎么回事?
寫這篇文章之前,想說一句有想要學習c/c++的同學話,關注小編頭條號,私信【編程】即可免費領取本文一整套系統的c/c++學習教程。
目前國內從事IT行業的程序員主力輸出基本是80后,這一代人接觸到電腦基本都是在高中大學時期接觸的,2000年左右的電腦價格非常貴,國內基本都是負擔不起電腦的昂貴的,所以對于相對更貴的蘋果產品就更鮮有人問津。所以自然接觸的系統也就是windows,經過接近10多年的使用習慣培養,對于windows系統可以說是很了解的。
那么,為什么很多程序員內心中都有一個蘋果情懷,如同很多年之前程序員都喜歡擁有一臺thinkpad筆記本一樣,如今被聯想收購之后,明顯沒有之前的感覺了,而使用mac系統依然是很多程序員心中的一個燈塔,為什么mac系統能贏得無數技術人員的青睞呢?
一方面、使用Mac系統的自豪感影響了很多人,相信很多人都對各種惡意軟件深惡痛絕,各種彈窗,軟件內嵌的廣告,就連迅雷的Mac版也干凈了很多。這些復雜紛亂的事情因為Mac的簡潔做到了極致。讓更多的媒體或者計算機工作者能更加放心安全的集中于工作。
另一方面、Mac系統非常穩定,穩定到可以一年不關機,幾乎不重裝,幾乎不死機。而用過windows的朋友應該知道,工作一半藍屏的絕望,有時會造成巨大的損失。另外,macbook的續航也是非常長。
更重要的是,Mac OS X是基于Unix系統,對程序員來說,這意味著Unix下一堆好用的工具都可以隨手撿到。如果你是個 windows 開發人員,我想你會在 windows 上裝一套cygwin 環境吧?你不用 flex/yacc,grep,screen,ssh,make?好多 open source的項目只提供cygwin/gcc/make 的編譯環境。Mac 就是基于BSD Unix 的,所有這些都是built in的。
因此,Mac系統在國內外都很受歡迎,尤其是在設計/web 開發/IT人員圈子里。你覺得呢?
獲取方式:
1.在你手機的右上角有【關注】選項,或點擊我的頭像,點擊關注!(關注我)
2.關注后,手機客戶端點擊我的主頁面,右上角有私信,請私信發我:編程
電腦已經設置好了關鍵詞自動回復,自動領取就好了!這幾天上萬個消息,真的回復不過來,所以回復的時候請注意關鍵詞!
其實做為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要這里請私信我“編程”不管你是小白還是大牛歡迎入住大家一起交流成長。小編會在里面不定期分享干貨源碼,包括我精心整理的一份c++零基礎教程。歡迎各位感興趣的的小伙伴。
學習思路:
學習資料:
Doris編譯安裝
編譯前準備
① 系統依賴
Tips:Centos編譯存在許多關于Gcc 問題,建議==使用ubuntu18.04 64位==,Centos即使手動配置以下條件,在編譯時存在Boost:Boost.Contextfails to build -> Call of overloaded 'callcc(...) is ambiguous' 等問題,使用阿里云ubuntu 18.04 64位可編譯可以避免踩很多坑。
嘗試使用Centos編譯:一直失敗,從未成功,最后使用ubuntu。
② 源碼地址
doris不同版本下載地址:
http://doris.apache.org/master/zh-CN/downloads/downloads.html
doris0.12版本下載地址:
https://www.apache.org/dyn/closer.cgi?path=/incubator/doris/0.12.0-incubating/apache-doris-0.12.0-incubating-src.tar.gz
==為了支持kafka 中json 數據寫入doris ,請使用社區版本的doris 0.12.21,下載地址如下:==
https://github.com/baidu-doris/incubator-doris/tags
③ 系統版本
| Linux系統 | 版本 |
| :--------: | -------------- |
| **Ubuntu** | **18.04 64位** |
| | |
Tips:使用ali的ubuntu 18.04 64位鏡像編譯成功。
④ 環境版本
| 軟件 | 版本 |
| ---- | -------------- |
| Java | java 11 及以上 |
| | |
⑤ 生產環境資源最低配置
| 模塊 | CPU | 內存| 磁盤 | 網絡 | 實例數量(最低要求)|
| ---- | --- | --- | ----- | ----- | -------------------|
| fe | 16核+| 64GB+|SSD/SATA|千兆網| 1-5* |
| be | 16核+| 64GB+|SSD/SATA|千兆網| 10-100 * |
磁盤采用ssd,目前hive數據為556G,粗略計算為930G,doris初度定為1T,后期數據量上來在動態擴容。
⑥ 建立實例后登陸 使用wget 下載源碼。
shell
###安裝wget
$ apt-get update
$ apt-get install wget
$ wget --version
###安裝lrzsz
$ apt install lrzsz
###創建安裝目錄
$ mkdir /opt/software &&cd /opt/software
###wget下載安裝包
$ wget https://github.com/baidu-doris/incubator-doris/archive/DORIS-0.12.21-release.tar.gz
###解壓安裝
$ tar -zxvf/opt/software/DORIS-0.12.21-release.tar.gz -C /opt/software/
編譯
① 使用docker鏡像方式,官方推薦。
② 直接編譯,==本文檔主要使用直接編譯方式==,且編譯系統為Ubuntu 18.04 64位。
Tips:==doris0.13版本取消mysql-5.7.18,lzo-2.10的依賴,移除依賴庫 mysql-5.7.18會導致無法訪問 MySQL 外部表。訪問 MySQL 外部表的功能會在后續版本中通過 UnixODBC 實現==
shell
$ cd/opt/software/incubator-doris-DORIS-0.12.21-release/thirdparty
$ mkdir src
$ cd src
$ sudo apt-get install lrzsz
$ rz
###上傳所有的依賴包
arrow-apache-arrow-0.15.1.tar.gz
bitshuffle-0.3.5.tar.gz
boost_1_59_0.tar.gz
boost_1_64_0.tar.gz
brotli-1.0.7.tar.gz
bzip2-1.0.8.tar.gz
cfe-3.4.2.src.tar.gz
compiler-rt-5.0.0.src.tar.xz
CRoaring-0.2.60.tar.gz
curl-7.54.1.tar.gz
double-conversion-3.1.1.tar.gz
flatbuffers-v1.10.0.tar.gz
gflags-2.2.0.tar.gz
glog-0.3.3.tar.gz
googletest-release-1.8.0.tar.gz
gperftools-2.7.tar.gz
incubator-brpc-0.9.5.tar.gz
jemalloc-5.2.1.tar.bz2
leveldb-1.20.tar.gz
libevent-20180622-24236aed01798303745470e6c498bf606e88724a.zip
librdkafka-0.11.6-RC5.tar.gz
llvm-3.4.2.src.tar.gz
lz4-1.7.5.tar.gz
lzo-2.10.tar.gz
mysql-5.7.18.tar.gz
openssl-1.0.2k.tar.gz
orc-1.5.8.tar.gz
protobuf-3.5.1.tar.gz
rapidjson-1.1.0.tar.gz
re2-2017-05-01.tar.gz
rocksdb-5.14.2.tar.gz
s2geometry-0.9.0.tar.gz
snappy-1.1.7.tar.gz
thrift-0.9.3.tar.gz
zlib-1.2.11.tar.gz
zstd-1.3.7.tar.gz
③ 基本環境準備完畢,配置JAVA_HOME,編譯doris。
```shell
$ apt-get -y update
$ apt-get install build-essentialopenjdk-11-jdk maven cmake byacc flex automake libtool-bin bison binutils-devlibiberty-dev zip unzip libncurses5-dev
### ubuntu默認換環境dash,切回bash
$ ls -al /bin/sh
$ dpkg-reconfigure dash
### ==> 選擇no
$ vim /etc/profile
exportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
export PATH=${JAVA_HOME}/bin:$PATH
$ source /etc/profile
### 進入apache-doris-0.12.0-incubating-src目錄
$ cd apache-doris-0.12.0-incubating-src
$ sh build.sh
###進入到fs_brkers目錄下的apache_hdfs_broker編譯關于hdfs的部分
$ cd fs_brkers/apache_hdfs_broker
$ sh build.sh
```
Tips:ubuntu不存在以下錯誤,Centos存在,報錯yacc: Commandnot found。解決辦法:安裝yacc,再執行sh build.sh。
如果操作第三方庫:
$ sh /opt/software/doris_src/apache-doris-0.12.0-incubating-src/thirdparty/build-thirdparty.sh
sh build.sh出現如下依賴包問題:
解決上面最直接的方式是修改pom依賴,[PR#4769](https://github.com/apache/incubator-doris/pull/4769/files)。
==注意:需要修改兩處pom依賴==
然后執行sh build.sh。
![編譯耗時19分鐘]
編譯成功后:
編譯hdfs和doris導數的部分[編譯耗時15分鐘]:
說明:doris安裝的be,fe在output中,關于hdfs導入到doris的安裝fs_brkers/apache_hdfs_broker下編譯出來的output中,把對應的安裝文件cp到對應的安裝路徑中。
把incubator-doris-DORIS-0.12.21-release下編譯出的output 復制并重命名為doris0.12.21,把incubator-doris-DORIS-0.12.21-release/fs_brkers/apache_hdfs_broker下編譯出的output下的apache_hdfs_broker0.12.21復制到安裝目錄即可。
集群部署
具體安裝細節說明請參考官方網站:
http://doris.apache.org/master/zh-CN/installing/install-deploy.html
生產環境官方建議:
① 規劃
| 節點名 | wm_doris1 | wm_doris2 | wm_doris3 |
| --------- | -------------- |------------ | ------------ |
| fe角色 | FE(leader) | FE(follower) | FE(observer) |
| be角色 | BE | BE | BE |
|hdfs_import| BROKER | BROKER | BROKER |
TIPS:BROKER節點應該和BE節點在同一節點并且數據一致。
② 網絡需求
|實例| 端口名稱 | 端口| 通訊方 | 說明 |
| -- | -------- | --- | ------------ |---------------- |
| BE | be_port | 9060 | FE --> BE |BE上用于接 FE 請求|
| BE |webserver_p| 8040| BE <-->BE |BE 上 httpserver端口|
| BE | heartbeat_p|9050| FE -->BE |BE 上用于接FE 的心跳 |
| BE | brpc_p |8060 |FE<-->BE, BE<--> BE | BE 上之間通訊 |
| FE | http_port | 8030 | FE <--> FE | FE http serve端口 |
|FE|rpc_p|9020|BE --> FE, FE<--> FE|FE上thriftserver 端口|
| FE | query_p | 9030 | 用戶 | FE 上的 mysql server 端口 |
|FE|edit_log_p |9010|FE <-->FE|FE上 bdbje之間通信用的端口|
|Broker|broker_ipc_p|8000|FE -->Broker| Broke上用接收請求 |
注:
1. 當部署多個 FE 實例時,要保證 FE 的 http_port 配置相同。
2. 部署前請確保各個端口在應有方向上的訪問權限。
添加ip&domain映射
上傳安裝包,解壓、配置
① 配置FE
```shell
$ unzip doris.zip -d /opt/module/doris
$ unzip apache_hdfs_broker.zip -d /opt/module/doris
[root@doris01]# ll
total 20
drwxr-xr-x 5 root root 4096 Nov 1 20:17 ./
drwxr-xr-x 5 root root 4096 Nov 1 19:25 ../
drwxr-xr-x 6 root root 4096 Nov 1 21:28 apache_hdfs_broker0.12.21/
drwxr-xr-x 5 root root 4096 Nov 1 19:10 doris0.12.21/
drwxr-xr-x 4 root root 4096 Nov 1 21:20 doris-meta/
[root@doris01]# pwd
/opt/module/doris
###分發到其他節點,使用自己編寫的分發shell腳本
$ scp -r -P 22 dorisniaoshu@doris02:/opt/software ==> password
$ scp -r -P 22 dorisniaoshu@doris02:/opt/software==> password
$ cd /opt/module/doris/
$ mkdir /opt/module/doris/doris-meta
$ vi conf/fe.conf
meta_dir = ${DORIS_HOME}/doris-meta
修改為
meta_dir = /opt/module/doris/doris-meta [所有節點]
```
Tips:
1.配置文件為conf/fe.conf。其中注意:`meta_dir`:元數據存放位置。默認在 fe/doris-meta/ 下。需**手動創建**該目錄。
2.fe.conf 中 JAVA_OPTS 默認 java 最大堆內存為 4GB,建議生產環境調整至 8G 以上。
② 配置BE
```shell
###創建數據存放目錄
$ cd /mnt/doris_data/
$ mkdir /mnt/doris_data/storage1
$ mkdir /mnt/doris_data/storage2
$ vi conf/be.conf
storage_root_path =${DORIS_HOME}/storage
修改為
storage_root_path =/mnt/doris_data/storage1,500;/mnt/doris_data/storage2
```
③ 配置FS_BROKER(hdfs導數)
```shell
### 把編譯好的包復制到安裝目錄,直接啟動即可
### 建議把emr中hdfs-site.xml導入 apache_hdfs_broker/conf目錄中覆蓋編譯中自帶的
### 直接啟動即可
```
Tips:所由節點都需要操作以上配置配置,也可以采用分發方式。
④ 安裝mysql客戶端
```shell
##上傳mysql-clien包
$ mkdir /opt/software/mysql-client&& rz
$ ll
libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb
libmysqlclient20-dbgsym_5.7.31-1ubuntu18.04_amd64.deb
libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb
mysql-client_5.7.31-1ubuntu18.04_amd64.deb
mysql-common_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-client_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-client-dbgsym_5.7.31-1ubuntu18.04_amd64.deb
##安裝
$ dpkg -imysql-common_5.7.31-1ubuntu18.04_amd64.deb
$ dpkg -imysql-community-client_5.7.31-1ubuntu18.04_amd64.deb
$ dpkg -imysql-community-client-dbgsym_5.7.31-1ubuntu18.04_amd64.deb
$ dpkg -ilibmysqlclient20-dbgsym_5.7.31-1ubuntu18.04_amd64.deb
$ dpkg -ilibmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb
$ dpkg -imysql-client_5.7.31-1ubuntu18.04_amd64.deb
```
啟動停止
```shell
###啟動be,fe,fs_broker命令
$ sh /opt/module/doris/doris0.12.21/fe/bin/start_fe.sh --daemon [節點1]
### 從節點首次啟動[注意點]
$ sh /opt/module/doris/doris0.12.21/fe/bin/start_fe.sh --helperdoris01:9010 --daemon[節點2,節點3]
$ sh /opt/module/doris/doris0.12.21/be/bin/start_be.sh --daemon [節點1,節點2,節點3]
$ sh /opt/module/doris/apache_hdfs_broker0.12.21/bin/start_broker.sh --daemon [節點1,節點2,節點3]
###停止be,fe,fs_broker命令
$ sh /opt/module/doris/fe/bin/stop_fe.sh
$ sh /opt/module/doris/be/bin/stop_be.sh
$ sh /opt/module/apache_hdfs_broker/bin/stop_broker.sh
```
大數據技術生態體系