主機名 |
網卡名稱 |
IP地址 |
子網掩碼 |
master |
eth0 |
192.168.1.248 |
255.255.255.0 |
slaver1 |
eth0 |
192.168.1.248 |
255.255.255.0 |
slaver2 |
eth0 |
192.168.1.248 |
255.255.255.0 |
以root身份在master、slaver1和slaver2上分別運行如下命令:
# groupadd hadoop
# useradd hadoop -g hadoop
# passwd hadoop
New Password:
Re-enter new Password:
passwd: password successfully changed for oracle
tong1節點,tong2節點和tong3節點在hadoop用戶下創建私鑰
[root@master ~]# su - hadoop
[hadoop@master~]$ ssh-keygen -t rsa
[hadoop@master~]$ cd ~/.ssh
[hadoop@master .ssh]$ ll
total 16
-rw-------. 1 hadoop hadoop 1675 Jan 6 10:28 id_rsa
-rw-r--r--. 1 hadoop hadoop 394 Jan 6 10:28 id_rsa.pub
-rw-r--r--. 1 hadoop hadoop 1983 Jan 8 11:14 known_hosts
[hadoop@master .ssh]$ scp slaver1:~/.ssh/id_rsa.pub slaver1--將slaver1節點上的密鑰複製到master節點上
id_rsa.pub 100% 394 0.4KB/s 00:00
[hadoop@master .ssh]$ scp slaver2:~/.ssh/id_rsa.pub slaver2 --將slaver2節點上的密鑰複製到master節點上
id_rsa.pub 100% 394 0.4KB/s 00:00
[hadoop@master .ssh]$ cat slaver1 slaver2 id_rsa.pub >> authorized_keys --將三個節點的私鑰放到authorized_keys文件中
[hadoop@master .ssh]$ scp authorized_keys slaver1:~/.ssh/ --將authorized_keys文件放入hadoop用戶下.ssh目錄中
authorized_keys 100% 394 0.4KB/s 00:00
[hadoop@master .ssh]$ scp authorized_keys slaver2:~/.ssh/
authorized_keys 100% 394 0.4KB/s 00:00
[hadoop@master .ssh]$ ssh master date --驗證三個節點ssh是否互信
Thu Jan 8 13:48:45 CST 2015
[hadoop@master .ssh]$ ssh slaver1 date
Thu Jan 8 13:49:13 CST 2015
[hadoop@master .ssh]$ ssh slaver2 date
Thu Jan 8 22:30:32 CST 2015
[hadoop@master .ssh]$
將下載的Java二進制安裝包上傳到/usr/local目錄
# rpm -ihv jdk-7u79-linux-x64.rpm
以root身份在master上編輯/home/hadoop/.bash_profile文件中加入以下環境變量
#source /home/hadoop/.bash_profile --使環境變量生效
或者:
[hadoop@master ~]$
. ~/.bash_profile
[root@master ~]$ tar xvf hadoop-2.6.0.tar.gz
[root@master ~]$ mv hadoop-2.6.0 /usr/local/
[root@master ~]$ cd /usr/local/
[root@master local]$ chown -R hadoop:hadoop hadoop-2.6.0/
[root@master local]$ ll hadoop-2.6.0/
total 56
drwxr-xr-x. 2 hadoop hadoop 4096 Nov 14 05:20 bin
drwxr-xr-x. 3 hadoop hadoop 4096 Nov 14 05:20 etc
drwxr-xr-x. 2 hadoop hadoop 4096 Nov 14 05:20 include
drwxr-xr-x. 3 hadoop hadoop 4096 Nov 14 05:20 lib
drwxr-xr-x. 2 hadoop hadoop 4096 Nov 14 05:20 libexec
-rw-r--r--. 1 hadoop hadoop 15429 Nov 14 05:20 LICENSE.txt
drwxrwxr-x. 2 hadoop hadoop 4096 Jan 8 14:13 logs
-rw-r--r--. 1 hadoop hadoop 101 Nov 14 05:20 NOTICE.txt
-rw-r--r--. 1 hadoop hadoop 1366 Nov 14 05:20 README.txt
drwxr-xr-x. 2 hadoop hadoop 4096 Nov 14 05:20 sbin
drwxr-xr-x. 4 hadoop hadoop 4096 Nov 14 05:20 share
[root@master local]$ su - hadoop
[hadoop@master ~]$ vim ~/.bash_profile --將hadoop的執行文件加入到環境變量中
export JAVA_HOME=/usr/local/jdk1.7.0_79
export JAR_HOME=/usr/local/jdk1.7.0_79/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAR_HOME/lib
export HADOOP_HOME=/usr/local/hadoop-2.6.0
export HBASE_HOME=/usr/local/hbase-0.98.9-hadoop2
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/usr/local/hbase-0.98.9-hadoop2/bin
export PATH
[hadoop@master ~]$ . ~/.bash_profile --環境變量生效
[hadoop@master ~]$ hadoop --查看hadoop是否可以使用
文件名 |
格式 |
描述 |
hadoop-env.sh |
Bash腳本 |
在運行hadoop的腳本中使用的環境變量 |
Core-site.xml |
Hadoop配置xml |
Hadoop核心的配置,例如HDFS和MapReduce中很普遍的I/O設置 |
Hdfs-site.xml |
Hadoop配置xml |
HDFS後臺程序設置的配置:名稱節點。第二名稱節點和數據節點 |
Mapred-site.xml |
Hadoop配置xml |
MapReduce後臺程序設置的配置:jobtracker和tasktracker |
yarn-site.xml |
Hadoop配置xml |
|
Masters |
純文本 |
記錄運行第二名稱節點的機器列表 |
Slaves |
純文本 |
記錄運行數據節點和tasktracker的機器列表 |
Hadoop-met Rics.properties |
Java屬性 |
控制hadoop怎麼發佈metrics的屬性 |
Log4j.properties |
Java屬性 |
系統日誌文件屬性、名稱節點審計日記和tasktracker子進程的日誌的屬性 |
hadoop-env.sh路徑/usr/local/hadoop-2.6.0/etc/hadoop,修改文件中環境變量JAVA_HOME的內容如下:
export JAVA_HOME=/usr/java/jdk1.7.0_79
所有機器做同樣操作。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadooptmp</value>
</property>
</configuration>
這一步只需要在master節點上執行。
這個文件存儲備master節點的IP或機器名,建議使用機器名,每行一個機器名。主master會將元數據等備份到備master節點,文件位置可能隨着版本不同有所變化,此次我們使用的版本在/sbin目錄下,如果沒有此文件需新建。
這裏,我們爲masters文件增加如下一行即可:
master
這一步只需要在兩臺master節點上執行,以便master以ssh方式去啓動所有的slave節點。
這個文件存儲slave節點的IP或機器名,建議使用機器名,每行一個機器名。這裏我們增加如下兩行:
slaver1
slaver2
文件中常用配置參數:
dfs.name.dir |
用逗號隔開的目錄名 |
${hadoop.tmp.dir} /dfs/name |
存儲名稱節點永久元數據的目錄列表。名稱節點在列表中的每一個目錄下存儲着元數據的副本 |
dfs.date.dir |
用逗號隔開的目錄名 |
${hadoop.tmp.dir} /dfs/name |
數據節點存儲塊的目錄列表 |
fs.checkpoint.dir |
用逗號隔開的目錄名 |
${hadoop.tmp.dir} /dfs/namesecondary |
第二名稱節點用來存儲檢查點的目錄列表。它在列表的每一個目錄下存儲着檢查點的副本 |
具體配置如下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
文件中常用配置參數:
Mapred.job.tracker |
主機名和端口 |
local |
Jobtracker的RPC服務器運行的主機名和端口。如果設置爲默認值local。則當運行一道作業時,jobtracker也在同一進程內(此時不必啓動mapreduce守護進程) |
Mapred.local.dir |
用逗號分隔的目錄名稱 |
${hadoop.tmp.dir} /mapred/local |
Mapreduce存儲作業中間數據的目錄列表。當作業結束時數據會被清空 |
Mapred.system.dir |
URL |
${hadoop.tmp.dir} /mapred/system |
當一道作業運行時,與存儲共享文件的fs.default.name相關的目錄 |
Mapred.tasktracker Map.tasks.maximum |
Int |
2 |
任一時刻tasktracker上運行map任務的數量 |
Mapred.tasktracker reduce.tasks.maximum |
int |
2 |
任一時刻tasktracker上運行reduce任務的數量 |
Mapred.child.java.opts |
string |
-xmx200m |
用來啓動tasktracker子進程,運行map和reduce任務的jvm選項。次屬性可以在每道作業上設置,這對爲debug設置JVM屬性比較有用 |
具體配置如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
文件中常用配置參數:
Yarn.resourcemanager.address |
|
新框架中 NodeManager 與 RM 通信的接口地址 |
Yarn.resourcemanager.scheduler.address |
|
NodeManger 需要知道 RM 主機的 scheduler 調度服務接口地址 |
Yarn.resourcemanager.webapp.address |
|
各個 task 的資源調度及運行狀況通過通過該 web 界面訪問 |
Yarn.resourcemanager.resource-tracker.address |
|
NodeManager 需要向 RM 報告任務運行狀態供 Resouce 跟蹤,因此 NodeManager 節點主機需要知道 RM 主機的 tracker 接口地址 |
具體配置如下:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.1.248:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.248:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.248:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.248:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.248:8088</value>
</property>
在Master節點上執行如下命令:
[hadoop@master bin]$ hadoop namenode -format
[hadoop@master ~]$ cd /usr/local/hadoop-2.6.0/sbin
[hadoop@master sbin]$ ./start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
…
啓動完成後在Master節點上執行:
[hadoop@master sbin]$ jps
#Master服務器上有以下進程
3051 ResourceManager
3117 Jps
2813 NameNode
其餘兩個Slave執行如下命令,節點進程有:
[hadoop@slaver1 sbin]$ jps
24448 NodeManager
24336 DataNode
24576 Jps
# groupadd hadoop
# useradd hadoop -g hadoop
# passwd hadoop
New Password:
Re-enter new Password:
passwd: password successfully changed for oracle