云計算作為互聯網發展的下一個階段, 無須擁有通常的物理硬件和軟件, 從計算能力到計算基礎設施, 應用程序和業務流程, 可以隨時隨地提供服務, 但是配置云計算的運算環境需要一定的時間。為了突破傳統統計軟件的單機統計能力限制, 本文梳理了亞馬遜AWS平臺上的基本配置和數據傳輸過程, 通過統計軟件來實現蒙特卡洛模擬的云計算。
《計算機輔助工程》是上海海事大學主辦的學術性刊物,創刊于1992年,是我國計算機界與工程界的重要學術性刊物之一。本刊主要刊登計算機技術及其應用和相關領域的學術論文,如計算機輔助設計與圖形學技術及應用、專家系統、知識工程、計算機網絡與通信、分布式系統、計算機軟件與理論、程序設計語言、操作系統、數據庫、計算機輔助教學、制造業信息化、物流工程信息化、交通運輸工程信息化、信息管理技術及應用、人工智能技術及應用、電氣自動化等領域的文章,以及有價值的研究報告和研究簡介。
0、 引言
云計算是一種新興的商業計算模型。是并行計算、分布式計算、網格計算發展的產物, 一種新時代形態的虛擬化技術。已經開發了許多基于云的虛擬工作空間, 這些工作空間可以帶來比任何臺式機或筆記本電腦更大的計算優勢。云計算對于學術界, 特別是研究人員來說具有巨大的潛力。雖然大多數研究人員具有廣泛的編程技能, 但他們通常不是計算機科學家, 存儲、讀取和操作大型數據集的能力對于處于研究最前沿的技術人員來說變得越來越重要。在云中啟動和運行指令往往需要消耗大量的時間, 因此, 人們必須經歷一些很明顯的選擇和指令頁面。云計算作為一種新型計算模型, 目標是簡化和降低計算能力、存儲設備甚至是應用系統等IT資源的使用門檻, 用戶只需連接因特網即可便捷地使用上述資源, 并按使用資源量付費。因此, 無論對其研究硬件設施的經濟性, 還是未來發展趨勢都有著積極的意義。
1、 云計算的概念
云計算作為一項全新的技術, 其概念基于“IT能力的可重用性”這一原則:一個抽象的, 高度可擴展的, 可管理的計算基礎架構池, 能夠托管最終客戶應用程序并按消費計費。云計算是一種計算范例, 其中大量系統池在私有或公共網絡中連接, 為應用程序、數據和文件存儲提供動態可擴展的基礎架構。隨著這項技術的出現, 計算、應用程序托管、內容存儲和交付的成本顯著降低, 有可能將數據中心從資本密集型轉變成其他類型。它與“網格計算”“分布式計算”“效用計算”或“自主計算”等傳統概念相比, 更能夠擴大研究者的視野。
云計算包括三個層次的服務:軟件即服務 (SaaS) , 基礎架構即服務 (IaaS) 和平臺即服務 (PaaS) 。國外著名的云計算平臺有:亞馬遜AWS、微軟Azure、IBM Cloud private以及谷歌云平臺, 國內比較有名的云平臺有:阿里云、騰訊云、華為云、百度BAE、新浪SAE等等。本文以亞馬遜網絡服務 (AWS) 為例, 來說明云計算的實現過程。AWS提供大量云服務, 包括計算、數據存儲和數據管理設施。目前, AWS提供一年免費訪問其部分服務, 作為研究人員學習如何使用云的機會。要獲得對任何云服務的訪問權限, 研究人員只需要使用AWS創建一個帳戶, 并在此賬戶下進行簡單的云計算, 其主要服務模塊有兩個:彈性計算云 (EC2) 和簡單存儲服務 (S3) 。
EC2是一種云服務, 提供可變大小的虛擬計算機, 稱為實例。一旦研究人員使用AWS創建了帳戶, 就可以在EC2中創建和訪問實例。簡單存儲服務 (S3) , 為研究人員提供安全且可擴展的存儲。S3和EC2可以分別用于存儲和分析數據。EC2和S3都是相對低成本的解決方案。例如, EC2有三種不同的定價方法:按需方式、競價方式和預留方式, 每種方法都有不同的價格。S3價格基于存儲的大小 (尺寸越大, 每GB的價格越便宜) 和使用頻率 (使用頻率越低, 每GB越便宜) 。數據可以存儲在S3中, 傳輸到EC2進行計算, 最后結果保存在S3, 用戶也可以將其下載到本地的個人計算機。
2、 云計算環境搭建
第一步是需要使用AWS創建一個帳戶。需要郵箱、電話號碼以及信用卡賬號完成驗證, 過程也非常簡單。此帳戶可以通過身份識別與訪問管理 (Identity and Access Management, 簡稱IAM) 進行權限管理, 能夠安全地控制其他用戶對Amazon AWS服務和資源的訪問權限, 即可以通過IAM角色授予第三方訪問您的AWS資源的權限, 而無須共享AWS安全憑證。而第三方則可以通過在AWS賬戶中創建的角色來訪問AWS資源。
第二步需要在EC2中創建實例 (instance) 。在EC2中創建和啟動的虛擬計算機稱為實例。EC2在創建實例時有一個頁面引導過程, 用于逐步進行。實例的創建需要首先選擇一個亞馬遜機器映像 (Amazon Machine Image, 簡稱AMI) , 它指定虛擬機將具有哪種類型的處理器、內存、存儲等 (比如選擇新筆記本電腦的硬件組件) 。最初, 新創建的虛擬機將沒有安裝軟件, 由研究人員提供和安裝所需的任何東西。當然也有多種預先配置的AMI可供選擇, 其中許多已經安裝了軟件。這種預先配置的AMI大大縮短了設置過程, 是重復任務的理想選擇。然后再選擇實例類型, 配置實例, 添加存儲, 標記實例, 配置安全組和查看等等。在EC2下中啟動實例是需要完成的最后一項操作。其具體操作過程如下:
(1) 選擇AMI和實例:雖然亞馬遜AWS中有許多需要購買的預先配備AMI, 不過有些AMI是免費的, 接下來可以選擇實例類型;
(2) 配置實例:這一步只需要默認設置即可;
(3) 添加存儲:用戶可以選擇存儲的大小和類型;
(4) 標記實例:研究人員可以選擇標記 (命名) 實例, 當用戶使用多個資源和實例時, 標簽可以有助于管理;
(5) 配置安全組:選擇適當的安全設置很重要, 安全組是一組控制與實例的流量 (通信) 的防火墻規則, 研究人員需要允許通過SSH與實例進行通信, 并允許通過Web瀏覽器 (http) 連接到RStudio服務器, 因此需要打開以下端口:22 (SSH) , 80 (HTTP) , 443 (HTTPS) , 3389 (RDP) 和8787 (RStudio Server) ;
最后, 點擊下一步審核, 完成實例的配置過程。
第三步是研究人員在自己的計算機和正在運行的EC2實例之間建立連接和通信橋梁。也就是通過SSH (安全shell) 軟件實現連接。個人計算機一旦與實例建立連接, 研究人員就可以在他的虛擬機上安裝和配置他可能需要的任何軟件, 例如可以安裝R和RStudio Server, Python, MATALB等。如果選擇預先配置已安裝軟件的AMI, 則研究人員仍需要與實例 (虛擬機) 建立連接, 以便啟動和使用他需要的軟件。例如RStudio Server的使用, 其中一個功能是可以通過SSH設置和啟動它, 然后可以通過用戶名和密碼從Web瀏覽器訪問它 (就像訪問他的電子郵件一樣) 。值得注意的是, 一旦研究人員完成了虛擬機的工作, 他就需要返回AWS和EC2并終止正在運行的實例。如果不這樣做, 將使實例處于工作狀態, 并將收取不必要的費用。
實例運行后, 需要通過安全shell (SSH) 直接與其建立連接, 不同的操作系數有所區別, 在Windows環境下可以利用PuTTY遠程連接工具, 而MAC OSX下使用Mac OS終端來完成 (Linux和MAC OSX都是UNIX類型的操作系統) , 設置是類似的。研究人員連接到AWS以便運行EC2上的實例。接下來, 就需將數據加載到S3, 以及在EC2和S3之間傳輸數據。
3、 數據的存儲及傳輸
簡單存儲服務 (Amazon Simple Storage Service, 簡稱Amazon S3或S3) 是AWS的一部分, 其存儲成本較低, 這一存儲服務與EC2是分開的, S3使用Web界面來存儲和檢索研究人員計算機的任何數據, 提供安全且可擴展的對象存儲。S3非常適用于大數據集的使用。當研究人員使用大型數據集并且不希望每次都將數據上傳到他的虛擬機時, S3非常有用, 即使使用較小的數據集, 將數據上傳到S3也許在邏輯上更為簡單, 然后將其傳輸到EC2并直接在云中執行所有需要的分析。只要兩個云服務 (EC2和S3) 位于同一地理位置, S3和EC2之間的數據傳輸速度非常快 (比從個人計算機上傳更快) , 并且是免費的。AWS將服務器托管在世界各地的幾個不同地理位置。研究人員應該選擇最接近他/她的那個并且使其一致, 以便始終為其EC2和S3提供相同的位置。S3和EC2之間的數據傳輸 (反之亦然) 也在通過SSH連接到虛擬機時完成。
如果研究人員使用的數據文件不大, 他可以自己保存文件在本地計算機, 并在需要時將其上傳到實例。以同樣的方式, 他的輸出文件可以很容易地下載回個人電腦。但是, 如果數據文件非常大, 則用戶最佳選擇是將其數據上傳到AWS云存儲 (S3) , 然后在需要時將其傳輸到EC2進行分析, 然后將結果保存回S3。我們建議使用此過程, 一方面因為大數據文件可能需要花費大量時間上傳, 上傳可能會中斷, 以及其他可能的相關問題;另一方面, 一旦數據在S3中, 轉移到EC2是快速簡便的。在本節中, 我們將介紹用戶如何將數據直接從個人計算機傳輸到EC2, 或者從計算機傳輸到S3然后再傳輸到EC2。
首先應在S3中創建存儲桶 (這是所有數據將進入的位置) , 類似數據庫的配置。在這種情況下, 一般默認選擇了“美國標準”。創建后, 單擊存儲桶, 然后創建一個文件夾。我們就可以直接裝載數據進入S3中。選擇文件夾, 然后從“操作”菜單中選擇“上傳”, 以便將本地數據文件上傳到S3。
3.1、 本地計算機與EC2的數據傳輸
3.1.1、 將數據從本地計算機傳輸到EC2創建的實例
實現這一功能有兩種方式:其中一個是通過SSH和命令行。另一個是使用RStudio Server的上傳和導出功能。這里介紹將數據直接上傳到適用于Windows用戶的EC2:
首先, 在連接到實例的PuTTY終端窗口中鍵入以下內容:
cd..
ls
cd home
cd Mydata
mkdir R
cd R
mkdir Data
cd Data
sudo chmod-R 0777/home/Mydata/R/Data
第一行退出最后一個文件夾并在其前移動一個文件夾。命令“ls”列出當前文件夾的內容。用戶應該能夠看到名為“home”根目錄下的文件夾。如果沒有, 他們需要重復進程“cd..”命令, 然后再執行“ls”命令, 直到找到“home”目錄。“cd home”打開“home”文件夾, “cd Mydata”導航到“Mydata”文件夾。“mkdir R”命令創建一個名為“R”的文件夾;“cd R”打開這個新創建的目錄。這同樣適用于“mkdir數據”和“cd數據”。最后一個命令設置文件夾權限, 允許在文件夾中復制, 保存和刪除文件。
接下來, 用戶需要啟動PSFTP (Putty安全文件傳輸協議) , 這些文件轉移應用程序, 包含在PuTTY這一工具中。從Windows命令提示符啟動PSFTP。要建立PSFTP連接, 我們應在Windows命令提示符中鍵入以下代碼:
psftp.exe ubuntu@XXX.XXX.XXX.XXX-/directory/keyfile.ppk
其中“/directory/key le.ppk”是“.ppk”文件的路徑, 以及XXX.XXX.XXX.XXX是公共DNS, 每次都使用實例的特定公共DNS進行更改。這樣配置完成以后, 為了傳輸數據, 就可以在Windows命令中輸入以下代碼:
put C:\directory\datafile/directory/datafile
其中“put”是將文件發送到EC2實例的命令, “C:\directory\datafile”是想要在他的本地計算機上發送的數據路徑, “/directory/datafile”是EC2實例上的目標文件夾。在PuTTY終端窗口中, 連接到EC2實例, 使用“ls”命令查看文件夾的內容。
3.1.2、 直接從EC2為Windows用戶下載數據
我們可以從Windows命令提示符下載文件 (使用PSFTP) 通過使用以下命令建立連接:
get/directory/datafile C:\directory\datafile
其中“get”是獲取文件的命令, “/directory/datafile”是文件夾的路徑, 在將要下載文件的EC2實例上, 以及“C:\directory\datafile”是要下載文件的文件夾的路徑。
3.2、 S3和EC2之間的傳輸數據
要在EC2和S3之間傳輸文件, 需要在正在運行的EC2實例上安裝和配置AWS命令行界面工具 (Command Line Interface, 簡稱CLI) 。此工具允許從命令行 (控制臺) 控制不同的服務, 也可以使用它來復制來自S3的文件。CLI的一部分配置是提供適當的憑證, 因此獲取憑證是CLI的第一步。安全憑證用于驗證授權任何第三方應用訪問你的AWS帳號, 訪問密鑰由訪問密鑰ID和私密訪問密鑰組成。要創建訪問密鑰, 需要轉到AWS頁面并選擇“身份和訪問管理” (IAM) 控制臺。創建訪問密鑰后, 用戶有一次機會下載它們。帶有憑證 (密鑰) 的文件需要保存在用戶的個人計算機上。如果文件丟失或用戶沒有下載, 他將無法使用憑證, 應創建一組新密鑰。包含訪問密鑰的文件稱為“credentials.csv”, 可以使用MS Excel打開。要安裝CLI, 需要在OSX終端或PuTTY終端中輸入以下代碼:
sudo apt-get install unzip
curl"https://s3.amazonaws.com/aws-cli/awsclibundle.zip"-o"awscli-bundle.zip"
unzip awscli-bundle.zip
sudo./awscli-bundle/install-i/usr/local/aws-b/usr/local/bin/aws
其中第一行安裝“unzip”, 這是處理zip格式的壓縮文件所需要的。第二行下載CLI, 第三行解壓縮文件, 最后一行安裝CLI.Next遵循CLI的配置。代碼應在OSX終端或PuTTY終端輸入:
aws configure
配置過程將要求提供憑證, 這些憑證位于“credentials.csv”中, 可以使用MS Excel打開文件。在這種情況下, 通過在OSX終端或PuTTY終端中輸入以下選項:
AWS Access Key ID[None]:AKIAID5BRLKNXVX XN7GA
AWS Secret Access Key[None]:kxNDqMpkHWdh6mdgJrogRpeA0DXlK/jiULWzRkq7
Default region name[None]:us-east-1
Default output format[None]:json
前兩行對應于憑證文件。區域名稱可在AWS文檔中找到。在這種情況下, 它一般是“us-east-1”, 但是也應該檢查它的特定區域設定是否正確。
3.2.1、 在S3和EC2之間傳輸數據
在終端中導航到“/home/Mydata/R/Data” (如上所述) 或創建使用以下代碼的文件夾:
cd..
ls
cd home
cd Mydata
mkdir R
cd R
mkdir Data
cd Data
sudo chmod-R 0777/home/Mydata/R/Data
以上代碼可以依照上述類似的解釋, 接下來, 在OSX終端或PuTTY終端上運行:
sudo aws s3 cp s3://bucketname/foldername/datafile.txt datafile.txt
其中“//bucketname/foldername/datafile.txt”是S3中數據文件的路徑, “datafile.txt”是EC2實例中文件的名稱。最后使用終端中的“ls”命令確認下載成功。
3.2.2、 將數據從EC2發送到S3
要將文件從EC2發送到S3, 我們可以在OSX終端或PuTTY終端中使用以下代碼:
sudo aws s3 cp datafile.txt s3://bucketname/foldername/datafile.txt
最后, 用戶可以返回S3控制臺并檢查文件是否已傳輸。可以在刷新后在S3控制臺中查看結果。
4、 蒙特卡洛和統計軟件選擇
蒙特卡洛方法 (Monte Carlo method) , 也稱統計模擬方法, 一種以概率統計理論為指導的一類非常重要的數值計算方法。隨著電子計算機的發展和科學技術問題的日趨復雜, 它較好地解決了很多高難度和復雜的數學計算問題, 因此在統計物理、核物理、真空技術、系統科學、信息科學、公用事業、地質、醫學, 可靠性及計算機科學等廣泛的領域都得到成功應用。從理論上來說, 蒙特卡洛方法需要大量的實驗。實驗次數越多, 所得到的結果越接近于正確值, 利用此方法可以測試出很多的參數, 比如圓周率的值。對于這些簡單的統計模擬問題, 目前單機的一般為4核, 可以并行計算提高計算效率并得到想要的精度。但是對于一些復雜的數學問題, 尤其一些優化問題的模擬, 計算過程需要反復迭代、計算, 即使涉及的維數不多, 其計算量也是以億次為級別單位, 普通的實驗室都難以滿足其時間和精度要求。而云計算提供了靈活的計算能力和高效的大規模數據處理, 針對蒙特卡洛模擬這樣需要大量計算的問題具有不可比擬的優越性和實用價值。
在統計軟件選擇中, 一般選擇像Python, R免費的開源軟件, 然而R在數據分析時得分更高的根本原因在于R包的分析庫更加廣泛。SAS仍然是臺式機企業分析的主要語言, 但是, 對于小型企業而言, 它仍然代價高昂, 并且由于每年的許可證不是一次性費用, 因此在成本支出方面具有較大的劣勢。由于單人計算機的R被迫處理僅限于RAM大小的數據, 因此云為我們提供了一個快速的解決方案, 利用R處理大數據, 并且云計算通過RStudio可以更加方便地安裝、部署和計算。對于大數據而言, 可以在云上直接獲得或者通過增加虛擬機上的RAM來獲得不同類型的RAM備選方案。
5、 結論
國內在云計算方面起步較晚, 采用云計算進行統計模擬的研究較少, 大多數是計算機方面的學者對云計算的架構進行研究。本文在云計算環境搭建的基礎上, 突破傳統的單機進行蒙特卡洛模擬的限制, 從以桌面系統為中心向以網絡為中心的模式發展, 服務和應用都將以在線的方式提供, 提出以云計算的方式來實現模擬統計。重視云計算在統計模擬中的應用, 結合專業統計工具, 充分發揮云計算技術的優勢, 可以使云計算在大數據統計分析上得到廣泛和深層次的應用。
參考文獻:
[1]OHRI A.Introduction to R for Cloud Computing[M].New York, NY:Springer New York, 2014:1-20.
[2]Gallagher M, Rengifo E W, Trendafilov R.Cloud Computing for MATLAB and R Users[J].Social Science Electronic Publishing, 2017.
[3]Pabitha M, Selvakumar T, Punitha Devi S.An Effective C, C++, PHP, Perl, Ruby, Python Compiler using Cloud Computing[J].International Journal of Computer Applications, 2013, 69 (7) :20-25.
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >