主机名 | 网卡名称 | 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% 39 4 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% 3 94 0.4KB/s 00:00
[hadoop@master .ssh]$ scp authorized_keys slaver2:~/.ssh/
authorized_keys 100% 3 94 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