首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Python 爬蟲架構補充:總控節點非 apt 方式安裝 MongoDB 與 Redis 完整實錄

     編輯:DB2 教學

Python 爬蟲架構補充:總控節點非 apt 方式安裝 MongoDB 與 Redis 完整實錄

爬蟲資料結構複雜、關聯深,關聯式資料庫冗余嚴重,嘗試引入 MongoDB(文件型)與 Redis(記憶體型)對比效能。本文記錄在 Ubuntu 總控節點以**二進位套件(非 apt)**方式部署 MongoDB 3.0.5 與 Redis 3.0.3 的完整步驟、坑點與啟動腳本。

一、為何選擇非 apt 安裝?

  • apt 安裝會將檔案分散至系統目錄(/etc、/var/lib、/usr/bin...),初學者難以掌控。
  • 需以非 root 使用者運行,自訂資料/日誌路徑。
  • 教訓:官方強烈建議 apt 安裝,生產環境請遵循官方最佳實務;本文僅供學習參考。

二、MongoDB 3.0.5 二進位部署

1. 下載與解壓

$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.5.tgz
$ tar -zxvf mongodb-linux-x86_64-3.0.5.tgz
$ mkdir -p ~/mongodb-3.0.5
$ cp -R mongodb-linux-x86_64-3.0.5/* ~/mongodb-3.0.5/

2. 環境變數與資料目錄

$ export PATH=~/mongodb-3.0.5/bin:$PATH
$ mkdir -p ~/mongodb-3.0.5/data/db
$ sudo chmod -R 777 ~/mongodb-3.0.5/data/db/

3. 啟動測試

$ mongod --dbpath ~/mongodb-3.0.5/data/db --fork --logpath ~/mongodb-3.0.5/data/db/mongodb.log

4. 解決「max open files」限制

預設 1024 過小,修改 /etc/security/limits.conf:

* soft nofile 3000
* hard nofile 20000
root soft nofile 3000
root hard nofile 20000

重啟機器生效,驗證 ulimit -n 顯示 3000。

5. System V 啟動腳本(/etc/init.d/mongodb)

#!/bin/sh
### BEGIN INIT INFO
# Provides: mongodb
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MongoDB server
### END INIT INFO

. /lib/lsb/init-functions
PROGRAM=~/mongodb-3.0.5/bin/mongod
MONGOPID=$(ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}')

case "$1" in
  start)
    ulimit -n 3000
    log_begin_msg "Starting MongoDB server"
    $PROGRAM --fork --quiet --journal --maxConns=2400 --rest \
      --dbpath ~/mongodb-3.0.5/data/db \
      --logpath ~/mongodb-3.0.5/data/db/mongodb.log
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping MongoDB server"
    if [ ! -z "$MONGOPID" ]; then kill -15 $MONGOPID; fi
    log_end_msg 0
    ;;
  status) ;;
  *) log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"; exit 1 ;;
esac
exit 0

註冊開機自啟:sudo chmod +x /etc/init.d/mongodb && sudo update-rc.d mongodb defaults

6. 驗證連線

$ ~/mongodb-3.0.5/bin/mongo
> db.foo.save({a:1})
> db.foo.find()
{ "_id" : ObjectId("..."), "a" : 1 }

遠端連線:mongo 192.168.x.x:27017

三、Redis 3.0.3 原始碼編譯部署

1. 下載編譯

$ wget https://download.redis.io/releases/redis-3.0.3.tar.gz
$ tar xzf redis-3.0.3.tar.gz
$ cd redis-3.0.3
$ make

2. 啟動與測試

$ src/redis-server &
$ src/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"

3. 生產化建議(未在文中實作)

  • 建立專用使用者、資料/日誌目錄權限分離。
  • 配置 redis.conf:bind、requirepass、maxmemory、maxmemory-policy allkeys-lru、appendonly yes、appendfsync everysec。
  • Systemd/Supervisor 管理進程,啟用備份與監控。

四、apt 套件管理常用指令備忘

apt-cache depends pkg       # 查看依賴
apt-cache rdepends pkg      # 查看反向依賴
apt-get build-dep pkg       # 安裝編譯依賴
apt-get source pkg          # 下載原始碼
apt-get clean && apt-get autoclean
apt-get check               # 檢查損壞依賴
# dpkg 鎖死急救
sudo rm /var/lib/dpkg/lock /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update && sudo apt-get upgrade

五、架構定位總結

中介軟體定位爬蟲場景建議
MongoDB文件型持久化儲存結構不固定的頁面解析結果、關聯圖譜、增量快照
Redis記憶體高速快取/佇列去重集合、待抓取 URL 隊列、計數器、分散式鎖、Session
MySQL關聯式核心業務帳號、任務調度、結構化報表、財務資料

實測證實:MongoDB 寫入吞吐遠超 MySQL 於半結構化爬蟲資料;Redis 作為去重與隊列核心,延遲穩定 < 1ms。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved