偽分布式(用不同進程模仿分布式運行中的各類節點)模式
完全分布式模式
注:前兩種可以在單機運行,最後一種用於真實的集群環境,通常用在生產環境上。我們可以搭建本地的偽分布式模式來模擬分布式環境的執行。
在每台linux虛擬機上,安裝:vim,ssh
sudo apt-get install vim
sudo apt-get install ssh
集群架構:包括3個節點:1個Master,3個Salve,節點之間局域網連接,可以相互ping通。節點IP地址分布如下:
主機名 IP 系統版本 Hadoopnode hadoop進程名
Master 192.168.137.100 CetOS6.5 master namenode,jobtracker
Slave1 192.168.137.101 CetOS 6.5 slave datanode,tasktracker
Slave2 192.168.137.102 CetOS 6.5 slave datanode,tasktracker
JAVA_HOME=/usr/lib/java/jdk1.7.0_79 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exportJAVA_HOME exportPATH export CLASSPATH
NETWORKING=yes
分別對三台主機設置:
HOSTNAME=Master
HOSTNAME=Slave0
HOSTNAME=Slave1
同時修改:hosts
#vim/etc/hosts
三台主機均添加如下:
在每台linux上,sudo vim /etc/hosts 編寫hosts文件。將主機名和ip地址的映射填寫進去。編輯完後,結果如下:
添加hadoop用戶並為其設置密碼:
#useradd hadoop #passwd hadoop
為hadoop用戶配置root權限,讓其可運行root命令。
#vim /etc/sudoers
切換到hadoop用戶:su hadoop
三台主機上,使用 ssh-keygen -t rsa 一路按回車就行了。
剛才都作甚了呢?主要是設置ssh的密鑰和密鑰的存放路徑。 路徑為~/.ssh下。
打開~/.ssh 下面有三個文件
authorized_keys,已認證的keys
id_rsa,私鑰
id_rsa.pub,公鑰 三個文件。
下面就是關鍵的地方了,(我們要做ssh認證。進行下面操作前,可以先搜關於認證和加密區別以及各自的過程。)
①在master上將公鑰放到authorized_keys裡。命令:sudo cat id_rsa.pub >> authorized_keys
②將master上的authorized_keys放到其他linux的~/.ssh目錄下。
(直接將三個主機的公鑰放到authorizedkey中,然後分別將此文件放到三個主機的~/.ssh目錄下面)
命令:sudo scp [email protected]:~/.ssh
sudo scp authorized_keys 遠程主機用戶名@遠程主機名或ip:存放路徑。
③修改authorized_keys權限,命令:chmod 644 authorized_keys
④測試是否成功
在任意一台主機使用ssh Master/Slave0/Slave1不用密碼,直接進入系統。這就表示成功了。
注:ssh連接The authenticity of host can't beestablished需要輸入用戶和密碼才能登陸。
修改/etc/ssh/ssh_config文件的配置,以後則不會再出現此問題
最後面添加:
StrictHostKeyCheckingno UserKnownHostsFile/dev/null
tar-zxvf hadoop-2.6.0.tar.gz -C /usr/local切換到/usr/local目錄下,修改hadoop-2.6.0的所有者。
chown -R hadoop.hadoop hadoop-2.6.0
exportHADOOP_INSTALL=/usr/local/hadoop-2.6.0 export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL執行hdfs,如果看到hadoop提示,則,hadoo已經完成安裝了。
mkdir /home/hadoop cd /home/hadoop mkdir hadoop2.6.0 cd /home/hadoop/hadoop2.6.0 mkdir tmp dfs cd /home/hadoop/hadoop2.6.0/dfs mkdir data name
cd/usr/local/hadoop-2.6.0/etc/hadoop
vim hadoop-env.sh
<configuration> <property> <name>fs.default.name</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop2.6.0/tmp</value> </property> </configuration>此修改為自己master的主機名+9000
<name>fs.default.name</name> <value>hdfs://Master:9000</value>
cd/usr/local/hadoop-2.6.0/etc/hadoop
代碼如下:
<pre name="code" class="plain"><configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop2.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/hadoop2.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> </configuration>
<property> <name>mapred.job.tracker</name> <value>Master:9001</value> </property>注:value為master主機名。注意:如果/usr/local/hadoop/etc/hadoop/mapred-site.xml文件沒有但是有/usr/local/hadoop/etc/hadoop/mapred-site.xml.template那麼最好修改下面這個文件,然後復制一份,改名為上面的名字
cd /usr/local/hadoop-2.6.0 bin/hdfs namenode -format
/usr/local/hadoop-2.6.0/sbin/start-dfs.sh //這個是啟動 /usr/local/hadoop-2.6.0/sbin/stop-dfs.sh //這個是關閉啟動完成以後使用jps查看輸出:
如果master有三個進程,slave0,slave1均有兩個相同的進程,此時我們的集群啟動成功了。
Master:
Slave0:
Slave1:
至此,分布式搭建成功。