Hadoop平臺搭建
Hadoop實現了一個分佈式文件系統HDFS。(存儲數據的系統大量的數據)
HDFS有高容錯性的特點,並且設計用來部署在低廉的硬件上;而且它提供高吞吐量來訪問應用程序的數據,適合那些有着超大數據集的應用程序。
Hadoop的框架最核心的設計就是:HDFS和MapReduce.HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。(提供處理數據的算法進行處理數據)
Hadoop充分利用集羣(就是將多臺計算機弄成一個大的羣體)的威力進行高速運算和存儲。
Hadoop架構
HDFS的體系:
Namenode()是HDFS的守護進程,核心,記錄文件如何劃分,存儲,對i/o,內存進行管理,hadoop從namenode知道文件存在哪些節點,然後和集羣打交道,但是它是單節點,一旦奔潰則集羣奔潰,每個集羣有一個
Secondary Namenode:namenode會把信息給他,然後namenode奔潰時補救,人工介入解決奔潰,每個集羣一個
Master不一定唯一,但是是運行namenode,secondary namenode或jobtracker,
slave是運行datanode,tasktracker
JobTracker:每個集羣只有唯一的一個,用於處理用戶提交的任務的後臺程序,分配任務,知道任務完成情況
TaskTracker:位於Slave上,管理各節點上的任務,並行Map或reduce任務,與jobTracker交互
Hadoop的三種運行方式:
1.單機模式只是用於瞭解hadoop,單機就是一臺機器。
2.僞分佈也是單機其實,但是安裝和完全分佈式一樣
3.完全分佈式要求至少三個幾點,不然構不成集羣(如果爲三個節點時,這時候就是三個節點都裝hadoop,但是一個節點充當master,用於管理其他節點,其他節點充當slave)運行的時候就是,其他的節點的請求會給master,master會給slave分配處理數據的任務,每個一小部分,slave運行map-reduce算法來處理,結果返回master,然後master給用戶。
主要是要研究map-reduce的算法。Map-reduce的算法就是分佈式計算的,是先將問題map映射到下部分,然後進行並行運算,然後reduce合成後就可以。有時候要進行多次的map和reduce。
截取論文中:Hadoop是由Apache基金會開發並開源的分佈式系統基礎架構。它的核心功能有兩個,文件的分佈式存儲和對分佈在集羣中的文件的並行處理。這兩個功能分別由HDFS(Hadoop Distributed File System,分佈式文件系統)和MapReduce編程模型實現。HDFS提供了友好的命令行工具,供用戶對文件進行常規操作。MapReduce則提供了底層的運行環境和開發接口,開發人員調用Hadoop的API,實現所需的業務邏輯,將工程打包成jar包後即可在集羣上運行。
HDFS是一個安全高效的分佈式存儲系統,它對硬件要求很低,用多節點備份的方法保證數據安全和容錯性,因而可以部署在低廉的硬件上。Hadoop用HDFS存儲從Scribe傳送來的日誌,並運行MapReduce並行處理程序。過程代碼的開發服從MapReduce框架。它按行都去處理日誌文件,當讀到滿足條件的記錄時,例如包含字符串“interest_from”,就會解析該行並做指定的計數和記錄。
HDFS採用master/slave的結構,其中master爲Namenode節點,slave爲Datanode節點。在集羣中,Namenode只有一個,它作爲管理者負責管理整個文件系統的命名空間、協調並記錄文件的各個數據塊在集羣中的位置、在出現讀寫故障時根據日誌信息對文件進行重建。開發人員可以在HDFS上對文件進行諸如建立、刪除、移動、重命名等操作。爲了防止單點故障,系統中還設置一個Secondary Namenode,該節點會同步更新Namenode上的數據,當Namenode失效時,系統會啓用Secondary Namenode[10]。
MapReduce也採用Master/Slave結構,其中master上運行jobtracker守護進程,slave上運行Tasktracker守護進程。jobtracker作爲管理者,負責調度所有任務,這些任務分佈在不同的Tasktracker上,僅完成由Tasktracker指派的任務,並向jobtracker彙報自身任務執行情況。
Ubuntu
hadoop 單機安裝與部署
說明:安裝hadoop首先要安裝java 然後再安裝hadoop
安裝JAVA
。解壓
cd /usr/local
tar -zxvf jdk-7u25-linux-x64.gz
2.配置/etc/profile
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_55
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HONE/jre/bin:$PATH
3.使其生效
source /etc/profile
4.查看JAVA安裝是否成功
java -version
安裝ssh,免密碼登陸。
apt-get install openssh-server 安裝ssh
建立 SSH KEY:
$ ssh-keygen -t rsa -P "" (注意不要多加空格或缺少空格)
中途需要安裝者選擇保存密鑰的文件,按回車使用默認的文件就可以了:
Enter file in which to save the key (/root/.ssh/id_rsa):(按回車)
啓用SSH KEY:
$ cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
/etc/init.d/ssh reload
reload ssh
ssh localhost
1. 安裝配置單機hadoop
1)解壓到/opt/hadoop
Java代碼
1. $ tar zxvf hadoop-1.2.0.tar.gz
2. $ sudo mv hadoop-1.2.0 /opt/
3. $ sudo chown -R hadoop:hadoop /opt/hadoop-1.2.0
4. $ sudo ln -sf /opt/hadoop-1.2.0 /opt/hadoop
4. 配置 hadoop-env.sh
1)在hadoop/conf 裏面hadoop-env.sh增加
Java代碼
1. export JAVA_HOME=/usr/jdk1.7.0_25
2. export HADOOP_HOME=/opt/hadoop
3. export PATH=$PATH:/opt/hadoop/bin
5.配置文件
1)編輯 /opt/hadoop/conf/core-site.xml
Java代碼
1. <configuration>
2. <property>
3. <name>fs.default.name</name>
4. <value>hdfs://localhost:9000</value>
5. </property>
6. <property>
7. <name>hadoop.tmp.dir</name>
8. <value>/tmp/hadoop/hadoop-${user.name}</value>
9. </property>
10. </configuration>
2)編輯 /opt/hadoop/conf/hdfs-site.xml
Java代碼
1. <configuration>
2. <property>
3. <name>dfs.replication</name>
4. <value>1</value>
5. </property>
6. </configuration>
3)編輯 /opt/hadoop/conf/mapred-site.xml
Java代碼
1. <configuration>
2. <property>
3. <name>mapred.job.tracker</name>
4. <value>localhost:9001</value>
5. </property>
6. </configuration>
6.格式化hdfs
Java代碼
1. $ cd /opt/hadoop
2. $ source conf/hadoop-env.sh
3. $ hadoop namenode -format
提示信息一大堆...
7. 啓動hadoop
Java代碼
1. $ sudo ./start-all.sh //在hadoop/bin下執行
8.完成後的測試
Java代碼
1. http://localhost:50030/ - Hadoop 管理接口