『壹』 如何在Centos6.5下部署hadoop2.2單機偽分布式
hadoop2.x的穩定版本,已經發布多時了,散仙一直都用的hadoop1.x的版本,最近有項目用到hadoop2.x,
所以就開始折騰hadoop2.x了,在hadoop2.x的版本里,目前最新版本已經到hadoop2.4了,但散仙在這里用的是
hadoop2.2.0的版本,為什麼用它? 因為這是一個穩定的版本,所以相對來說,問題比較少。
散仙在上篇博客,已經講了如何在編譯hadoop2.2.0的64位的版本,如果有不清楚怎麼編譯,可以參考散仙上篇博文,在這里就不涉及了。
下面,散仙以表格的形式描述下偽分布式安裝
系統環境如下:
序號
名稱
描述
1
系統環境
Centos6.5
2
java環境
JDK1.7
3
Haoop版本
hadoop2.2.0
安裝步驟如下:
序號
步驟
1
解壓hadoop,並配置環境變數
2
使用which hadoop命令,測試是否成功
3
配置core-site.xml
4
配置hdfs-site.xml
5
配置yarn-site.xml(非必須,使用默認也可)
6
配置mapred-site.xml
7
配置mapred-env.sh裡面的JAVA路徑
8
如上的配置完成後,需要新建幾個文件夾,來提供HDFS的格式化底層一個是hadoop的tmp文件夾,另外的是namenode和datanode的文件夾,來分別存儲各自的信息
9
上面一切完成後,即可執行hadoop namenode -format 進行格式化
10
然後啟動偽分布式集群,執行命令sbin/start-all.sh 最後使用JPS查看JAVA進程
11
配置本機的hosts文件,映射主機名信息
下面來詳細說下,各個步驟的具體操作:
在這之前,最好配置好本機的SSH無密碼登陸操作,避免hadoop進程之間通信時,需要驗證。
下面是各個xml文件的配置
<!-- core-site.xml配置 -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.46.28:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
<!-- hdfs-site.xml配置 -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoop/nddir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoop/dddir</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
<!-- yarn-site.xml 不用配置,使用默認屬性即可 -->
<configuration>
</configuration>
<!-- mapred-site.xml的配置 -->
<configuration>
<property>
<name>maprece.cluster.temp.dir</name>
<value></value>
<description>No description</description>
<final>true</final>
</property>
<property>
<name>maprece.cluster.local.dir</name>
<value></value>
<description>No description</description>
<final>true</final>
</property>
</configuration>
mapred-env.sh裡面的配置
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding right ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
export JAVA_HOME=/usr/local/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
#export HADOOP_JOB_HISTORYSERVER_OPTS=
#export HADOOP_MAPRED_LOG_DIR="" # Where log files are stored. $HADOOP_MAPRED_HOME/logs by default.
#export HADOOP_JHS_LOGGER=INFO,RFA # Hadoop JobSummary logger.
#export HADOOP_MAPRED_PID_DIR= # The pid files are stored. /tmp by default.
#export HADOOP_MAPRED_IDENT_STRING= #A string representing this instance of hadoop. $USER by default
#export HADOOP_MAPRED_NICENESS= #The scheling priority for daemons. Defaults to 0.
然後,建對應的幾個文件夾即可,路徑都在hadoop2.2的根目錄下即可,
然後執行格式化命令bin/hadoop namenode -format即可;
最後使用jps命令,查看進程,如果有以下幾個進程名稱,就代表部署偽分布式成功
4887 NodeManager
4796 ResourceManager
4661 SecondaryNameNode
4524 DataNode
4418 NameNode
6122 Jps
然後,訪問界面埠,注意與之前的配置文件里一致,namenode的埠號仍為50070,原來1.x的50030埠,已經沒有了,可以訪問8088的yarn的埠,來查看,具體的截圖如下:
OK,此時,我們已經成功的完成偽分布式的部署,下一步我們要做的,就是跑一個經典的MR程序Hellow World,來測試我們的集群了。
『貳』 hadoop基本操作
啟動HDFS
通過可視化界面查看HDFS的運行情況
使用方法:
如果是文件,則按照如下格式返迴文件信息:
文件名 <副本數> 文件大小 修改日期 修改時間 許可權 用戶ID 組ID
如果是目錄,則返回它直接子文件的一個列表,就像在Unix中一樣。目錄返回列表的信息如下:
目錄名 <dir> 修改日期 修改時間 許可權 用戶ID 組ID
示例:
返回值:
成功返回0,失敗返回-1
使用方法:
將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。
示例:
返回值:
成功返回0,失敗返回-1。
使用方法:
從本地文件系統中復制單個或多個源路徑到目標文件系統。也支持從標准輸入中讀取輸入寫入目標文件系統。
返回值:
成功返回0,失敗返回-1。
使用方法:
刪除指定的文件。只刪除非空目錄和文件。請參考rmr命令了解遞歸刪除。
示例:
返回值:
成功返回0,失敗返回-1。
分布式文件系統的設計思路:
添加環境變數
保存退出後, 讓.bash_profile立即生效
進入到解壓後的hadoop目錄 修改配置文件
集群
『叄』 如何在centos7上配置hadoop
1
解壓hadoop,並配置環境變數
2
使用which
hadoop命令,測試是否成功
3
配置core-site.xml
4
配置hdfs-site.xml
5
配置yarn-site.xml(非必須,使用默認也可)
6
配置mapred-site.xml
7
配置mapred-env.sh裡面的JAVA路徑
8
如上的配置完成後,需要新建幾個文件夾,來提供HDFS的格式化底層一個是hadoop的tmp文件夾,另外的是namenode和datanode的文件夾,來分別存儲各自的信息
9
上面一切完成後,即可執行hadoop
namenode
-format
進行格式化
10
然後啟動偽分布式集群,執行命令sbin/start-all.sh
最後使用JPS查看JAVA進程
11
配置本機的hosts文件,映射主機名信息
下面來詳細說下,各個步驟的具體操作:
在這之前,最好配置好本機的SSH無密碼登陸操作,避免hadoop進程之間通信時,需要驗證。
下面是各個xml文件的配置
<!--
core-site.xml配置
-->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.46.28:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
<!--
hdfs-site.xml配置
-->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoop/nddir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoop/dddir</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
『肆』 如何在ubuntu14.04配置分布式hadoop
我的環境是:Ubuntu14.04+Hadoop2.6.0+JDK1.8.0_25
官網2.6.0的安裝教程:http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html
為了方面配置,我在每台機器上都使用了hadoop用戶來操作,這樣做的確夠方便。
結點信息:(分布式集群架構:master為主節點,其餘為從節點)
機器名
IP
作用
master
122.205.135.254
NameNode and JobTracker
slave1
122.205.135.212
DataNode and TaskTracker
1.JDK的安裝
首先Hadoop運行需要Java的支持,所以必須在集群中所有的節點安裝JDK,
jdk1.8.0_25的詳細安裝見我的另一篇文章:http://www.linuxidc.com/Linux/2015-01/112030.htm 注意:最好將集群中的JDK都安裝在同一目錄下,便於配置。實踐中,筆者一般將JDK安裝在/usr/java這個目錄,但並不是必須的。
2.配置hosts文件
修改集群中所有機器的/etc/hosts,打開該文件的命令如下:
sudo gedit /etc/hosts
添加:
122.205.135.254 master
122.205.135.212 slave1
如圖所示:
注意:這里的master、slave1、slave2等等,指的是機器的機器名(使用命令hostname可以查看本機的機器名),切記,如果不是機器名的話會出問題的,並且集群中所有結點的機器名都應該不一樣。
3.SSH無密碼登錄
Hadoop主從節點無密碼登錄的安裝配置詳細見我的另一篇章:點擊打開鏈接
4.Hadoop的安裝與配置
(1).下載解壓Hadoop穩定版
我用的是hadoop-2.6.0,下載地址:http://mirrors.hust.e.cn/apache/hadoop/common/stable/
將下載後的Hadoop 拷貝到hadoop目錄下,解壓到master伺服器的/hadoop目錄下(配置好master結點後再將其復制到其它的伺服器上,一般來說,群集中所有的hadoop都安裝在同一目錄下):
解壓命令如下:
tar xzfv hadoop-2.6.0.tar.gz
(2).配置Hadoop
1.修改hadoop-2.6.0/etc/hadoop/hadoop-env.sh,添加JDK支持:
export JAVA_HOME=/usr/java/jdk1.8.0_25
如果不知道你的JDK目錄,使用命令echo $JAVA_HOME查看。
2.修改hadoop-2.6.0/etc/hadoop/core-site.xml
注意:必須加在<configuration></configuration>節點內
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.6.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
3.修改hadoop-2.6.0/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/name</value>
<description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/data</value>
<description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
4.修改hadoop-2.6.0/etc/hadoop/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
<description>Host or IP and port of JobTracker.</description>
</property>
5. 修改hadoop-2.6.0/etc/hadoop/masters
列出所有的master節點:
master
6.修改hadoop-2.6.0/etc/hadoop/slaves
這個是所有datanode的機器,例如:
slave1
slave2
slave3
slave4
7.將master結點上配置好的hadoop文件夾拷貝到所有的slave結點上
以slave1為例:命令如下:
scp -r ~/hadoop-2.6.0 hadoop@slave1:~/
安裝完成後,我們要格式化HDFS然後啟動集群所有節點。
5.啟動Hadoop
1.格式化HDFS文件系統的namenode
(這里要進入hadoop-2.6.0目錄來格式化好些):
cd hadoop-2.6.0 //進入hadoop-2.6.0目錄
bin/hdfs namenode -format //格式化
2.啟動Hadoop集群
啟動hdrs命令如下:
sbin/start-dfs.sh //開啟進程
『伍』 大數據:Hadoop入門
什麼是大數據:
(1.)大數據是指在一定時間內無法用常規軟體對其內容進行抓取,管理和處理的數據集合,簡而言之就是數據量非常大,大到無法用常規工具進行處理,如關系型資料庫,數據倉庫等。這里「大」是一個什麼量級呢?如在阿里巴巴每天處理數據達到20PB(即20971520GB).
2.大數據的特點:
(1.)體量巨大。按目前的發展趨勢來看,大數據的體量已經到達PB級甚至EB級。
(2.)大數據的數據類型多樣,以非結構化數據為主,如網路雜志,音頻,視屏,圖片,地理位置信息,交易數據,社交數據等。
(3.)價值密度低。有價值的數據僅佔到總數據的一小部分。比如一段視屏中,僅有幾秒的信息是有價值的。
(4.)產生和要求處理速度快。這是大數據區與傳統數據挖掘最顯著的特徵。
3.除此之外還有其他處理系統可以處理大數據。
Hadoop (開源)
Spark(開源)
Storm(開源)
MongoDB(開源)
IBM PureDate(商用)
Oracle Exadata(商用)
SAP Hana(商用)
Teradata AsterData(商用)
EMC GreenPlum(商用)
HP Vertica(商用)
註:這里我們只介紹Hadoop。
二:Hadoop體系結構
Hadoop來源:
Hadoop源於Google在2003到2004年公布的關於GFS(Google File System),MapRece和BigTable的三篇論文,創始人Doug Cutting。Hadoop現在是Apache基金會頂級項目,「
Hadoop」一個虛構的名字。由Doug Cutting的孩子為其黃色玩具大象所命名。
Hadoop的核心:
(1.)HDFS和MapRece是Hadoop的兩大核心。通過HDFS來實現對分布式儲存的底層支持,達到高速並行讀寫與大容量的儲存擴展。
(2.)通過MapRece實現對分布式任務進行處理程序支持,保證高速分區處理數據。
3.Hadoop子項目:
(1.)HDFS:分布式文件系統,整個Hadoop體系的基石。
(2.)MapRece/YARN:並行編程模型。YARN是第二代的MapRece框架,從Hadoop 0.23.01版本後,MapRece被重構,通常也稱為MapRece V2,老MapRece也稱為 MapRece V1。
(3.)Hive:建立在Hadoop上的數據倉庫,提供類似SQL語音的查詢方式,查詢Hadoop中的數據,
(5.)HBase:全稱Hadoop Database,Hadoop的分布式的,面向列的資料庫,來源於Google的關於BigTable的論文,主要用於隨機訪問,實時讀寫的大數據。
(6.)ZooKeeper:是一個為分布式應用所設計的協調服務,主要為用戶提供同步,配置管理,分組和命名等服務,減輕分布式應用程序所承擔的協調任務。
還有其它特別多其它項目這里不做一一解釋了。
三:安裝Hadoop運行環境
用戶創建:
(1.)創建Hadoop用戶組,輸入命令:
groupadd hadoop
(2.)創建hser用戶,輸入命令:
useradd –p hadoop hser
(3.)設置hser的密碼,輸入命令:
passwd hser
按提示輸入兩次密碼
(4.)為hser用戶添加許可權,輸入命令:
#修改許可權
chmod 777 /etc/sudoers
#編輯sudoers
Gedit /etc/sudoers
#還原默認許可權
chmod 440 /etc/sudoers
先修改sudoers 文件許可權,並在文本編輯窗口中查找到行「root ALL=(ALL)」,緊跟後面更新加行「hser ALL=(ALL) ALL」,將hser添加到sudoers。添加完成後切記還原默認許可權,否則系統將不允許使用sudo命令。
(5.)設置好後重啟虛擬機,輸入命令:
Sudo reboot
重啟後切換到hser用戶登錄
安裝JDK
(1.)下載jdk-7u67-linux-x64.rpm,並進入下載目錄。
(2.)運行安裝命令:
Sudo rpm –ivh jdk-7u67-linux-x64.rpm
完成後查看安裝路徑,輸入命令:
Rpm –qa jdk –l
記住該路徑,
(3.)配置環境變數,輸入命令:
Sudo gedit /etc/profile
打開profile文件在文件最下面加入如下內容
export JAVA_HOME=/usr/java/jdk.7.0.67
export CLASSPATH=$ JAVA_HOME/lib:$ CLASSPATH
export PATH=$ JAVA_HOME/bin:$PATH
保存後關閉文件,然後輸入命令使環境變數生效:
Source /etc/profile
(4.)驗證JDK,輸入命令:
Java –version
若出現正確的版本則安裝成功。
配置本機SSH免密碼登錄:
(1.)使用ssh-keygen 生成私鑰與公鑰文件,輸入命令:
ssh-keygen –t rsa
(2.)私鑰留在本機,公鑰發給其它主機(現在是localhost)。輸入命令:
ssh--id localhost
(3.)使用公鑰來登錄輸入命令:
ssh localhost
配置其它主機SSH免密登錄
(1.)克隆兩次。在VMware左側欄中選中虛擬機右擊,在彈出的快捷鍵菜單中選中管理---克隆命令。在克隆類型時選中「創建完整克隆」,單擊「下一步」,按鈕直到完成。
(2.)分別啟動並進入三台虛擬機,使用ifconfig查詢個主機IP地址。
(3.)修改每台主機的hostname及hosts文件。
步驟1:修改hostname,分別在各主機中輸入命令。
Sudo gedit /etc/sysconfig/network
步驟2:修改hosts文件:
sudo gedit /etc/hosts
步驟3:修改三台虛擬機的IP
第一台對應node1虛擬機的IP:192.168.1.130
第二台對應node2虛擬機的IP:192.168.1.131
第三台對應node3虛擬機的IP:192.168.1.132
(4.)由於已經在node1上生成過密鑰對,所有現在只要在node1上輸入命令:
ssh--id node2
ssh--id node3
這樣就可以將node1的公鑰發布到node2,node3。
(5.)測試SSH,在node1上輸入命令:
ssh node2
#退出登錄
exit
ssh node3
exit
四:Hadoop完全分布式安裝
1. Hadoop有三種運行方式:
(1.)單機模式:無須配置,Hadoop被視為一個非分布式模式運行的獨立Java進程
(2.)偽分布式:只有一個節點的集群,這個節點即是Master(主節點,主伺服器)也是Slave(從節點,從伺服器),可在此單節點上以不同的java進程模擬分布式中的各類節點
(3.)完全分布式:對於Hadoop,不同的系統會有不同的節點劃分方式。
2.安裝Hadoop
(1.)獲取Hadoop壓縮包hadoop-2.6.0.tar.gz,下載後可以使用VMWare Tools通過共享文件夾,或者使用Xftp工具傳到node1。進入node1 將壓縮包解壓到/home/hser目錄下,輸入命令:
#進入HOME目錄即:「/home/hser」
cd ~
tar –zxvf hadoop-2.6.0.tar.gz
(2.)重命名hadoop輸入命令:
mv hadoop-2.6.0 hadoop
(3.)配置Hadoop環境變數,輸入命令:
Sudo gedit /etc/profile
將以下腳本加到profile內:
#hadoop
export HADOOP_HOME=/home/hser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
保存關閉,最後輸入命令使配置生效
source /etc/profile
註:node2,和node3都要按照以上配置進行配置。
3.配置Hadoop
(1.)hadoop-env.sh文件用於指定JDK路徑。輸入命令:
[hser@node1 ~]$ cd ~/hadoop/etc/hadoop
[hser@node1 hadoop]$ gedit hadoop-env.sh
然後增加如下內容指定jDK路徑。
export JAVA_HOME=/usr/java/jdk1.7.0_67
(2.)打開指定JDK路徑,輸入命令:
export JAVA_HOME=/usr/java/jdk1.7.0_67
(4.)core-site.xml:該文件是Hadoop全局配置,打開並在
『陸』 搭建hadoop集群,常用配置文件是什麼,以及配置哪些屬性
一. 簡介
參考了網上許多教程,最終把hadoop在ubuntu14.04中安裝配置成功。下面就把詳細的安裝步驟敘述一下。我所使用的環境:兩台ubuntu 14.04 64位的台式機,hadoop選擇2.7.1版本。(前邊主要介紹單機版的配置,集群版是在單機版的基礎上,主要是配置文件有所不同,後邊會有詳細說明)
二. 准備工作
2.1 創建用戶
創建用戶,並為其添加root許可權,經過親自驗證下面這種方法比較好。
1 sudo adser hadoop2 sudo vim /etc/sudoers3 # 修改內容如下:4 root ALL = (ALL)ALL5 hadoop ALL = (ALL)ALL
給hadoop用戶創建目錄,並添加到sudo用戶組中,命令如下:
1 sudo chown hadoop /home/hadoop2 # 添加到sudo用戶組3 sudo adser hadoop sudo
最後注銷當前用戶,使用新創建的hadoop用戶登陸。
2.2安裝ssh服務
ubuntu中默認是沒有裝ssh server的(只有ssh client),所以先運行以下命令安裝openssh-server。安裝過程輕松加愉快~
sudo apt-get install ssh openssh-server
2.3 配置ssh無密碼登陸
直接上代碼:執行完下邊的代碼就可以直接登陸了(可以運行ssh localhost進行驗證)
1 cd ~/.ssh# 如果找不到這個文件夾,先執行一下 "ssh localhost"2 ssh-keygen -t rsa3 cp id_rsa.pub authorized_keys
注意:
這里實現的是無密登陸自己,只適用與hadoop單機環境。如果配置Hadoop集群設置Master與Slave的SSH無密登陸可
三. 安裝過程
3.1 下載hadoop安裝包
有兩種下載方式:
1. 直接去官網下載:
2. 使用wget命令下載:
3.2 配置hadoop
1. 解壓下載的hadoop安裝包,並修改配置文件。我的解壓目錄是(/home/hadoop/hadoop-2.7.1),即進入/home/hadoop/文件夾下執行下面的解壓縮命令。
tar -zxvf hadoop-2.7.1.tar.gz
2. 修改配置文件:(hadoop2.7.1/etc/hadoop/)目錄下,hadoop-env.sh,core-site.xml,mapred-site.xml.template,hdfs-site.xml。
(1). core-site.xml 配置:其中的hadoop.tmp.dir的路徑可以根據自己的習慣進行設置。
至此,wordcount demo 運行結束。
六. 總結
配置過程遇到了很多問題,最後都一一解決,收獲很多,特此把這次配置的經驗分享出來,方便想要配置hadoop環境的各位朋友~
(Hadoop集群安裝配置過程基本和單機版是一樣的,主要是在配置文件方面有所區別,以及ssh無密登陸要求master和slave能夠互相無密登陸。
『柒』 怎麼在Centos6.5下部署hadoop2.2單機偽分布式
hadoop2.x的穩定版本,已經發布多時了,散仙一直都用的hadoop1.x的版本,最近有項目用到hadoop2.x,所以就開始折騰hadoop2.x了,在hadoop2.x的版本里,目前最新版本已經到hadoop2.4了,但散仙在這里用的是hadoop2.2.0的版本,為什麼用它? 因為這是一個穩定的版本,所以相對來說,問題比較少。
散仙在上篇博客,已經講了如何在編譯hadoop2.2.0的64位的版本,如果有不清楚怎麼編譯,可以參考散仙上篇博文,在這里就不涉及了。
下面,散仙以表格的形式描述下偽分布式安裝
系統環境如下:
序號 名稱 描述
1 系統環境 Centos6.5
2 JAVA環境 JDK1.7
3 Haoop版本 hadoop2.2.0
安裝步驟如下:
序號 步驟
1 解壓hadoop,並配置環境變數
2 使用which hadoop命令,測試是否成功
3 配置core-site.xml
4 配置hdfs-site.xml
5 配置yarn-site.xml(非必須,使用默認也可)
6 配置mapred-site.xml
7 配置mapred-env.sh裡面的JAVA路徑
8 如上的配置完成後,需要新建幾個文件夾,來提供HDFS的格式化底層一個是hadoop的tmp文件夾,另外的是namenode和datanode的文件夾,來分別存儲各自的信息
9 上面一切完成後,即可執行hadoop namenode -format 進行格式化
10 然後啟動偽分布式集群,執行命令sbin/start-all.sh 最後使用JPS查看JAVA進程
11 配置本機的hosts文件,映射主機名信息
下面來詳細說下,各個步驟的具體操作:
在這之前,最好配置好本機的SSH無密碼登陸操作,避免hadoop進程之間通信時,需要驗證。
下面是各個xml文件的配置
Xml代碼
『捌』 winserver 2012 怎麼配置hadoop
1、安裝JDK1.6或更高版本
官網下載JDK,安裝時注意,最好不要安裝到帶有空格的路徑名下,例如:Programe Files,否則在配置Hadoop的配置文件時會找不到JDK(按相關說法,配置文件中的路徑加引號即可解決,但我沒測試成功)。
2、安裝Cygwin
Cygwin是Windows平台下模擬Unix環境的工具,需要在安裝Cygwin的基礎上安裝Hadoop
根據操作系統的需要下載32位或64的安裝文件。
1)、雙擊下載好的安裝文件,點擊下一步,選擇install from internet
2)、選擇安裝路徑
3)、選擇local Package Directory
4)、選擇您的Internet連接方式
5)、選擇合適的安裝源,點擊下一步
6)、在Select Packages界面里,Category展開net,選擇如下openssh和openssl兩項
如果要在Eclipe上編譯Hadoop,需要安裝Category為Base下的sed
如果想在Cygwin上直接修改hadoop的配置文件,可以安裝Editors下的vim
7)、點擊「下一步」,等待安裝完成。
3、配置環境變數
在「我的電腦」上點擊右鍵,選擇菜單中的「屬性",點擊屬性對話框上的高級頁簽,點擊」環境變數"按鈕,在系統變數列表裡雙擊「Path」變數,在變數值後輸入安裝的Cygwin的bin目錄,例如:D:hadoopcygwin64in
4、安裝sshd服務
雙擊桌面上的Cygwin圖標,啟動Cygwin,執行ssh-host-config -y命令
執行後,會提示輸入密碼,否則會退出該配置,此時輸入密碼和確認密碼,回車。最後出現Host configuration finished.Have fun!表示安裝成功。
輸入net start sshd,啟動服務。或者在系統的服務里找到並啟動Cygwin sshd服務。
可能會遇到無法安裝和啟動sshd服務的問題,可參考此連接http://www.cnblogs.com/kinglau/p/3261886.html。
另外如果是Win8操作系統,啟動Cygwin時,需要以管理員身份運行(右鍵圖標,選擇以管理員身份運行),否則會因為許可權問題,提示「發生系統錯誤5」。
5、配置SSH免密碼登錄
執行ssh-keygen命令生成密鑰文件
如下圖所示,輸入:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,注意-t -P -f參數區分大小寫。
ssh-keygen是生成密鑰命令
-t 表示指定生成的密鑰類型(dsa,rsa)
-P表示提供的密語
-f指定生成的密鑰文件。
注意:~代表當前用戶的文件夾,/home/用戶名
執行此命令後,在你的Cygwinhome用戶名 路徑下面會生成.ssh文件夾,可以通過命令ls -a /home/用戶名 查看,ssh -version命令查看版本。
執行完ssh-keygen命令後,再執行下面命令,就可以生成authorized_keys文件了。
cd~/.ssh/
cpid_dsa.pubauthorized_keys
如下圖所示:
然後執行exit命令,退出Cygwin窗口
6、再次在桌面上雙擊Cygwin圖標,打開Cygwin窗口,執行ssh localhost命令,第一次執行該命令會有提示,輸入yes後,回車即可。如下圖所示
7、安裝Hadoop
把hadoop壓縮包解壓到/home/用戶名 目錄下,文件夾名稱更改為hadoop,可以不修改,但後邊在執行命令時稍顯麻煩。
(1)單機模式配置方式
單機模式不需要配置,這種方式下,Hadoop被認為是一個單獨的Java進程,這種方式經常用來調試。
(2)偽分布模式
可以把偽分布模式看作是只有一個節點的集群,在這個集群中,這個節點既是Master,也是Slave,既是NameNode,也是DataNode,既是JobTracker,也是TaskTracker。
這種模式下修改幾個配置文件即可。
配置hadoop-env.sh,記事本打開改文件,設置JAVA_HOME的值為你的JDK安裝路徑,例如:
JAVA_HOME="D:hadoopJavajdk1.7.0_25"
配置core-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!--Putsite-.-->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>mapred.child.tmp</name>
<value>/home/u/hadoop/tmp</value>
</property>
</configuration>
配置hdfs-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!--Putsite-.-->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置mapred-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!--Putsite-.-->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapred.child.tmp</name>
<value>/home/u/hadoop/tmp</value>
</property>
</configuration>
8、啟動Hadoop
打開Cgywin窗口,執行cd ~/hadoop命令,進入hadoop文件夾,如下圖:
啟動Hadoop前,需要先格式化Hadoop的文件系統HDFS,執行命令:bin/hadoop namenode -format
注意namenode要小些,否則如果輸入NameNode,會提示錯誤,找不到或無法載入主類NameNode。執行正確命令後如下圖所示:
輸入命令 bin/start-all.sh,啟動所有進程,如下圖:
接下來,驗證是否安裝成功
打開瀏覽器,分別輸入下列網址,如果能夠正常瀏覽,說明安裝成功。
localhost:50030,回車打開MapRece的web頁面,如下圖(頁面部分截圖):
localhost:50070,回車打開HDFS的web頁面,如下圖(頁面部分截圖):
第一次啟動後,如果都不能瀏覽,或不能瀏覽某一個,退出Cygwin,重新打開Cygwin,執行bin/start-all.sh命令。
如果只想啟動MapRece,可執行bin/start-mapred.sh命令。
如果只想啟動HDFS,可執行bin/start-dfs.sh命令。
『玖』 centos 6.5怎麼搭建hadoop2.7.3
總體思路,准備主從伺服器,配置主伺服器可以無密碼SSH登錄從伺服器,解壓安裝JDK,解壓安裝Hadoop,配置hdfs、maprece等主從關系。
1、環境,3台CentOS6.5,64位,Hadoop2.7.3需要64位Linux,操作系統十幾分鍾就可以安裝完成,
Master 192.168.0.182
Slave1 192.168.0.183
Slave2 192.168.0.184
2、SSH免密碼登錄,因為Hadoop需要通過SSH登錄到各個節點進行操作,我用的是root用戶,每台伺服器都生成公鑰,再合並到authorized_keys
(1)CentOS默認沒有啟動ssh無密登錄,去掉/etc/ssh/sshd_config其中2行的注釋,每台伺服器都要設置,
#RSAAuthentication yes
#PubkeyAuthentication yes
(2)輸入命令,ssh-keygen -t rsa,生成key,都不輸入密碼,一直回車,/root就會生成.ssh文件夾,每台伺服器都要設置,
(3)合並公鑰到authorized_keys文件,在Master伺服器,進入/root/.ssh目錄,通過SSH命令合並,
cat id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
(4)把Master伺服器的authorized_keys、known_hosts復制到Slave伺服器的/root/.ssh目錄
(5)完成,ssh [email protected]、ssh [email protected]就不需要輸入密碼了
3、安裝JDK,Hadoop2.7需要JDK7,由於我的CentOS是最小化安裝,所以沒有OpenJDK,直接解壓下載的JDK並配置變數即可
(1)下載「jdk-7u79-linux-x64.gz」,放到/home/java目錄下
(2)解壓,輸入命令,tar -zxvf jdk-7u79-linux-x64.gz
(3)編輯/etc/profile
export JAVA_HOME=/home/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(4)使配置生效,輸入命令,source /etc/profile
(5)輸入命令,java -version,完成
4、安裝Hadoop2.7,只在Master伺服器解壓,再復制到Slave伺服器
(1)下載「hadoop-2.7.0.tar.gz」,放到/home/hadoop目錄下
(2)解壓,輸入命令,tar -xzvf hadoop-2.7.0.tar.gz
(3)在/home/hadoop目錄下創建數據存放的文件夾,tmp、hdfs、hdfs/data、hdfs/name
5、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.0.182:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
6、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.0.182:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
7、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的mapred-site.xml
<configuration>
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobhistory.address</name>
<value>192.168.0.182:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>192.168.0.182:19888</value>
</property>
</configuration>
8、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的mapred-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.0.182:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>192.168.0.182:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.0.182:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.0.182:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.0.182:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>768</value>
</property>
</configuration>
9、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下hadoop-env.sh、yarn-env.sh的JAVA_HOME,不設置的話,啟動不了,
export JAVA_HOME=/home/java/jdk1.7.0_79
10、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的slaves,刪除默認的localhost,增加2個從節點,
192.168.0.183
192.168.0.184
11、將配置好的Hadoop復制到各個節點對應位置上,通過scp傳送,
scp -r /home/hadoop 192.168.0.183:/home/
scp -r /home/hadoop 192.168.0.184:/home/
12、在Master伺服器啟動hadoop,從節點會自動啟動,進入/home/hadoop/hadoop-2.7.0目錄
(1)初始化,輸入命令,bin/hdfs namenode -format
注意:執行這步的時候可能會報一個錯誤:
java.net.UnknownHostException: tiancunPC: tiancunPC: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264)
at org.apache.hadoop.net.DNS.<clinit>(DNS.java:57)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newBlockPoolID(NNStorage.java:982)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newNamespaceInfo(NNStorage.java:591)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:157)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:992)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1434)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
Caused by: java.net.UnknownHostException: tiancunPC: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 8 more
16/11/11 19:15:23 WARN net.DNS: Unable to determine address of the host-falling back to "localhost" address
java.net.UnknownHostException: tiancunPC: tiancunPC: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at org.apache.hadoop.net.DNS.resolveLocalHostIPAddress(DNS.java:287)
at org.apache.hadoop.net.DNS.<clinit>(DNS.java:58)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newBlockPoolID(NNStorage.java:982)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newNamespaceInfo(NNStorage.java:591)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:157)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:992)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1434)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
Caused by: java.net.UnknownHostException: tiancunPC: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 8 more
linux中使用hostname查看為:
[root@tiancunPC hadoop-2.7.3]# hostname
tiancunPC
查看/etc/hosts為:
[root@tiancunPC hadoop-2.7.3]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
難怪會映射不到,修改/etc/hosts
[root@tiancunPC hadoop-2.7.3]# cat /etc/hosts
127.0.0.1 tiancunPC localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
對應修改另外兩個機器的主機名,在執行那個命令就可以了
(2)全部啟動sbin/start-all.sh,也可以分開sbin/start-dfs.sh、sbin/start-yarn.sh
執行sbin/start-all.sh 可能會有錯誤提示:
maps to localhost(IP), but this does not map back to the address
解決辦法:
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
GSSAPIAuthentication no
這個時候可能還會出現這個錯誤提示:
hadoop出現namenode running as process 18472. Stop it first.,hadoopnamenode
解決辦法:重新啟動一下hadoop
(3)停止的話,輸入命令,sbin/stop-all.sh
(4)輸入命令,jps,可以看到相關信息
『拾』 hadoop 解壓安裝成功後怎麼用
先安裝vim:sudo apt-get install vim
然後輸入:sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf(vim需安裝)
在彈出的編輯框里輸入:greeter-show-manual-login=true 保存關閉。
為了給root設置密碼,在終端中輸入:sudo passwd root。
關機重啟在多出的登錄框里輸入root 和設置的密碼!