❶ 如何在openstack上部署hadoop
隨著信息時代的快速發展,大數據技術和私有雲環境都非常實用;只是,假設將兩者結合在一起。企業會獲得巨大的利潤。雖然結合兩者會讓環境變得更復雜。企業仍然能夠看到將 OpenStack 私有雲和 Apache Hadoop 環境結合在一起產生的顯著的協同效應。怎樣來做會更好?
方案1. Swift、Nova + Apache Hadoop MapRece
對於希望在大數據環境中實現更高程度的靈活性、可擴展性和自治性的企業,能夠利用 Apache 和 OpenStack 提供的開源產品的與生俱來的能力。為此,企業須要最大限度地利用這兩種技術棧。這就要求採用與前面所述的解決方式不同的思維方式來設計環境。
在這方面軟體開發專業網是非常有經驗的。
要獲得全然可伸縮的、靈活的大數據環境,必須在一個同一時候提供存儲和計算節點的私有雲環境中執行它。為此。企業必須先構建私有雲。然後加入大數 據。因此。在這樣的情況下,必定會用到 Swift、Nova 和 RabbitMQ。並控制器節點來管理和維護環境。
可是。問題在於企業是否須要針對不同的系統和業務部門將環境分為若干個部分(比如,非大數據虛擬機或客 戶機實例)。假設企業准備全然使用私有雲,那麼應當加入 Quantum,從網路的角度對不同的環境進行劃分。
方案2. Swift+Apache Hadoop MapRece
在私有雲環境中。常見的大數據部署模型之中的一個是:將 OpenStack 的 Swift 存儲技術部署到 Apache Hadoop MapRece 集群,從而實現處理功能。使用這樣的架構的優勢是。企業將獲得一個可擴展的存儲節點,能夠用該節點來處理其不斷累積的數據。依據 IDC 的調查,數據年增長率已經達到 60%,該解決方式將滿足不斷增長的數據需求。同一時候同意組織同一時候啟動一個試點項目來部署私有雲。
該部署模型的最佳使用場景是企業希望通過存儲池嘗試使用私有雲技術。同一時候在內部使用大數據技術。最佳實踐表明企業應當先將大數據技術部署到您的 生產數據倉庫環境中。然後構建並配置您的私有雲存儲解決方式。假設將 Apache Hadoop MapRece 技術成功融合到數據倉庫環境中。而且已經正確構建並執行您的私有雲存儲池。那麼您就能夠將私有雲存儲數據與預調度的 Hadoop MapRece 環境集成在一起。
方案3. Swift + Cloudera Apache Hadoop 發行版
對於那些不願意從頭開始使用大數據的企業,能夠使用 Cloudera 等解決方式供應商提供的大數據設備。
Cloudera 的發行版包含 Apache Hadoop (CDH) 解決方式,它同意企業不必針對 Hadoop 的每一個細微區別來招募或培訓員工。因此能夠在大數據方面實現更高的投資回報 (ROI)。
對於那些不具備大數據或私有雲技能集。希望以緩慢、漸進的方式將該技術集成到其產品組合的企業。這一點尤其吸引人。
大數據和雲計算屬於相對較新的技術,很多企業希望通過它們實現成本節省;只是。很多企業對於是否全然採用這些技術猶豫不決。通過利用供應商支持 的大數據軟體版本號,企業在這方面將會更加從容,同一時候還能夠了解怎樣使用這些技術來發揮自身的優勢。此外,假設使用大數據軟體分析大型數據集,並且能夠通過 私有雲存儲節點來管理這些數據集。那麼這些企業還能夠實現更高的利用率。為了最好地將這一策略集成到企業中,首先須要安裝、配置和管理 CDH,以便分析企業的數據倉庫環境。然後將 Swift 中存儲的數據加入到須要的地方。
在設置並測試了私有雲環境後。能夠將 Apache Hadoop 組件合並到當中。
此時。Nova 實例可用於存放 NoSQL 或 SQL 數據存儲(沒錯,它們能夠共存)以及 Pig 和 MapRece 實例;Hadoop 能夠位於一個獨立的非 Nova 機器上,以便提供處理功能。
在不久的將來,Hadoop 有望在 Nova 實例上執行,使私有雲自包括到全部 Nova 實例中。
方案4. GFS、Nova、Pig 和 MapRece
從架構的角度看,除了使用 OpenStack 的 Swift 實現可擴展存儲外,可能還有其它選擇。本例使用了 Google File System (GFS)、Nova 組件和 Apache Hadoop 組件,詳細來講,使用了 Pig 和 MapRece。該演示樣例同意企業集中精力開發一個僅用於計算處理的私有雲計算節點,同一時候利用 Google 的公共存儲雲作為數據存儲。通過使用這樣的混合雲,企業能夠專注於計算處理功能的核心能力,由第三方負責實現存儲。該模型能夠利用其它供應商的存儲解決方 案,如 Amazon Simple Storage Service;可是,在使用不論什麼外部存儲之前,企業應當在內部使用可擴展的文件系統 (XFS) 來構建該解決方式。並進行對應的測試,然後再將其擴展到公共雲中。此外,依據數據的敏感性。企業可能須要使用數據保護機制,比方模糊處理 (obfuscation)、解除匿名化、加密或散列。
技巧和提示
在將雲計算和大數據技術並入企業環境時,一定要為這兩個技術平台構建員工的技能集。
當您的員工理解這些技術後,就能夠組建一個實驗室來測試這兩 個平台合並後的效果。因為包括很多不同的組件。因此在實現過程中。請務必遵循前面提到的經過驗證的路徑。
此外,企業在嘗試合並這兩種模式時可能會遇到一些 挫折,應當在進行若干次嘗試後改用其它方法。這些方法包括設備和混合雲。
障礙和陷阱
因為這些都是比較新的技術,所以大多數企業須要利用現有資源進行測試,之後再進行大量的資本支出 (CapEx)。然而,假設沒有對這些技術在企業中的應用進行合理的預算和人員培訓,那麼試點和測試工作將會以失敗告終。相同。假設缺少完整的私有雲部 署。企業應當首先在當中實現大數據技術,然後再實現私有雲。
最後,企業須要為私有雲和大數據計劃制定一個戰略路線圖。要獲得成功的部署,則須要進行很多其它的分析 「工作」,這有可能會遲延處理過程。為了消除這樣的風險,應當採用一種迭代式的項目管理方法,以分階段的方式部署到業務部門中。通過這樣的方法將這些技術部署 到企業中。企業須要確認怎樣通
❷ 現在做一個爬蟲程序,希望把爬到的網頁存進hadoop創建的分布式文件系統,用java開發
把stringbuffer的內容存到hadoop中?hadoop的dfs是用來存放海量數據的。想必你的stringbuffer相當大了?那這種內大小的數據能放在內存容中?
如果你的stringbuffer是一個文件的話,那麼直接運行bin/hadoop dfs -FromLocal yourfilepath tmpfilepath 這個命令就行了。
❸ 如何部署hadoop分布式文件系統
一、實戰環境
系統版本:CentOS 5.8x86_64
JAVA版本:JDK-1.7.0_25
Hadoop版本:hadoop-2.2.0
192.168.149.128namenode (充當namenode、secondary namenode和ResourceManager角色)
192.168.149.129datanode1 (充當datanode、nodemanager角色)
192.168.149.130datanode2 (充當datanode、nodemanager角色)
二、系統准備
1、Hadoop可以從Apache官方網站直接下載最新版本Hadoop2.2。官方目前是提供了linux32位系統可執行文件,所以如果需要在64位系統上部署則需要單獨下載src 源碼自行編譯。(如果是真實線上環境,請下載64位hadoop版本,這樣可以避免很多問題,這里我實驗採用的是32位版本)
1234 Hadoop
Java
2、我們這里採用三台CnetOS伺服器來搭建Hadoop集群,分別的角色如上已經註明。
第一步:我們需要在三台伺服器的/etc/hosts裡面設置對應的主機名如下(真實環境可以使用內網DNS解析)
[root@node1 hadoop]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1localhost.localdomain localhost
192.168.149.128node1
192.168.149.129node2
192.168.149.130node3
(注* 我們需要在namenode、datanode三台伺服器上都配置hosts解析)
第二步:從namenode上無密碼登陸各台datanode伺服器,需要做如下配置:
在namenode 128上執行ssh-keygen,一路Enter回車即可。
然後把公鑰/root/.ssh/id_rsa.pub拷貝到datanode伺服器即可,拷貝方法如下:
ssh--id -i .ssh/id_rsa.pub [email protected]
ssh--id -i .ssh/id_rsa.pub [email protected]
三、Java安裝配置
tar -xvzf jdk-7u25-linux-x64.tar.gz &&mkdir -p /usr/java/ ; mv /jdk1.7.0_25 /usr/java/ 即可。
安裝完畢並配置java環境變數,在/etc/profile末尾添加如下代碼:
export JAVA_HOME=/usr/java/jdk1.7.0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./
保存退出即可,然後執行source /etc/profile 生效。在命令行執行java -version 如下代表JAVA安裝成功。
[root@node1 ~]# java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
(注* 我們需要在namenode、datanode三台伺服器上都安裝Java JDK版本)
四、Hadoop版本安裝
官方下載的hadoop2.2.0版本,不用編譯直接解壓安裝就可以使用了,如下:
第一步解壓:
tar -xzvf hadoop-2.2.0.tar.gz &&mv hadoop-2.2.0/data/hadoop/
(注* 先在namenode伺服器上都安裝hadoop版本即可,datanode先不用安裝,待會修改完配置後統一安裝datanode)
第二步配置變數:
在/etc/profile末尾繼續添加如下代碼,並執行source /etc/profile生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/
(注* 我們需要在namenode、datanode三台伺服器上都配置Hadoop相關變數)
五、配置Hadoop
在namenode上配置,我們需要修改如下幾個地方:
1、修改vi /data/hadoop/etc/hadoop/core-site.xml 內容為如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.149.128:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base forother temporary directories.</description>
</property>
</configuration>
2、修改vi /data/hadoop/etc/hadoop/mapred-site.xml內容為如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.149.128:9001</value>
</property>
</configuration>
3、修改vi /data/hadoop/etc/hadoop/hdfs-site.xml內容為如下:
<?xml version="1.0"encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" /name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
4、在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME變數:
echo "export JAVA_HOME=/usr/java/jdk1.7.0_25/">> /data/hadoop/etc/hadoop/hadoop-env.sh
5、修改 vi /data/hadoop/etc/hadoop/masters文件內容為如下:
192.168.149.128
6、修改vi /data/hadoop/etc/hadoop/slaves文件內容為如下:
192.168.149.129
192.168.149.130
如上配置完畢,以上的配置具體含義在這里就不做過多的解釋了,搭建的時候不明白,可以查看一下相關的官方文檔。
如上namenode就基本搭建完畢,接下來我們需要部署datanode,部署datanode相對簡單,執行如下操作即可。
1 fori in`seq 129130` ; doscp -r /data/hadoop/ [email protected].$i:/data/ ; done
自此整個集群基本搭建完畢,接下來就是啟動hadoop集群了。