- 准备工作
- 三台虚拟机,强烈推荐vmware + centos6.5
- 三台虚拟机均设有hadoop用户
- IP地址设置
IP地址 hostname 192.168.11.100 master 192.168.11.101 slave1 192.168.11.102 slave2
- 说明:#开头表示root用户,$开头表示hadoop用户
- 配置IP
-
所有虚拟机可按照以下这个模板根据自己实际情况相应设置
-
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
ONBOOT=yes
BROADCAST=192.168.11.255
IPADDR=192.168.11.100
NETMASK=255.255.255.0
NETWORK=192.168.11.0
GATEWAY=192.168.11.2
-
3. 其他重要设置
-
- 关闭防火墙: #service iptables stop
-
- #chkconfig iptables --list -- 查看各个init模式下,是否开机自动启动的状态
- #chkconfig iptables off --关闭各个init模式下,开机不自动启动
- #chkconfig iptables --list -- 查看各个init模式下,是否开机自动启动的状态
-
- 禁用SELinux: #vim /etc/sysconfig/selinux 设置SELINUX=disabled
- 修改hostname: #vi /etc/sysconfig/network 设置HOSTNAME=master
- 192.168.11.100 master
- 192.168.11.101 slave1
- 192.168.11.102 slave2
- 说明:以上设置在每个虚拟机中都要进行设置
- 关闭防火墙: #service iptables stop
4.设置ssh免密码登陆
1.master和slave:
$ssh-keygen -t rsa
$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$chmod 644 ~/.ssh/authorized_keys *********切记好多人都是因为这个折腾了好久,
$ssh localhost 两次,第一次需要yes,第二次不需要,而直接连上,则成功
2.每个slave:
$scp hadoop@master:~/.ssh/id_rsa.pub ./master_rsa.pub
$cat master_rsa.pub >> authorized_keys
3.master:
$ssh slave1 第一次需要yes, 第二次不需要,而直接连上,则成功
$ssh slave2 第一次需要yes, 第二次不需要,而直接连上,则成功
5.安装JDK
6.安装hadoop-1.2.1
1.下载hadoop-1.2.1.tar.gz,并移动到要安装目录
2.解压: $tar -zxvf hadoop-1.2.1.tar.gz
3.配置环境变量 #vim /etc/profile
## HADOOP
export HADOOP_HOME=/opt/modules/hadoop-1.2.1
export PATH=$PATH:$HADOOP_HOME/bin
4.使配置生效 # source /etc/profile
5.配置配置文件,在HADOOP_HOME/conf/ 下
hadoop-env.sh
export JAVA_HOME=/opt/modules/jdk1.6.0_45
core-site.xml
说明: fs.default.name是NameNode的URI。hdfs://主机名:端口/
hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,需在本地文件系统中创建相应文件夹
如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
hdfs-site.xml
dfs.name.dir
/home/hadoop/name1,/home/hadoop/name2
Determines where on the local filesystem the DFS name node should store the name table.
If this is a comma-delimited list of directories then the name table
is replicated in all of the directories, for redundancy.
dfs.data.dir
/home/hadoop/data1, /home/hadoop/data2
Determines where on the local filesystem an DFS data node should store its blocks.
If this is a comma-delimited list of directories, then data will be stored in all named directories,
typically on different devices. Directories that do not exist are ignored.
dfs.replication
2
Default block replication. The actual number of replications can
be specified when the file is created.
The default is used if replication is not specified in create time.
dfs.permission
false
说明: dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。
当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。
当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,
hadoop格式化时会自动创建,如果预先创建反而会有问题。
mapred-site.xml
then jobs are runin-process as a single map and reduce task.
说明: mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。
master
master -- 指定SecondaryNameNode的位置
slave
slave1 --指定DataNode和TaskTracker的位置
slave2
说明:注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,
并且保证上面的配置对于其他机器而言正确,
也可自己根据具体情况自行配置
参考:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
7. 启动hadoop
1. 格式化一个新的分布式文件系统
$ hadoop namenode -format
*** 查看输出保证分布式文件系统格式化成功执行完后可以到master机器上
看到/home/hadoop//name1和/home/hadoop/name2两个目录。
在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
2. 启动所有节点
$start-all.sh
*** 执行完后可以到master(Master)和slave(Slave1,Slave2,Slave3)
机器上看到/home/hadoop/hadoopfs/data1和/home/hadoop/data2两个目录。
3.关闭所有节点
从主节点master关闭hadoop,主节点会关闭所有从节点的hadoop。
(默认是 ${HADOOP_HOME}/logs).
${HADOOP_HOME}就是安装路径.
8.测试
1.用jps检验各后台进程是否成功启动