1.前提
需要提前下载的有:
1、JDK-1.8.0
2、hadoop-2.4.0
3、putty
1.1安装VMware
VMware安装比较简单,网盘中有安装文件,遇到什么问题请百度之,此处不再罗嗦
1.2安装centos6.4
1.2.1 网络配置
打开VMware->编辑->虚拟网络编辑器 如图配置
1.2.2正式安装
Hadoop完全分布式集群至少须要两台虚拟机,考虑到内存占用量大的问题,此处推荐以下配置
内存 | 安装模式 | IP地址 | |
Master | 1G | Minimal Desktop | 192.168.224.100 |
Slave1 | 512M | Minimal | 192.168.224.71 |
step1:打开VMware->文件-> 新建虚拟机 选 “自定义(高级)”->下一步
step2:选稍后安装操作系统->选择linux系统、版本CentOS->名称、位置随意->处理器核数根据自己情况选->内存选择
512M:只能安装命令行模式,32位2G内存可以同时运行3台虚拟机(也够呛了)
1G:可以安装多种带图形操作界面模式,32位2G内存可以同时运行2台虚拟机
随后一直点确认就对了
step3:在创建好的虚拟机上右键-》设置虚拟机,点CD/DVD载入CentOS6.4映像文件,运行虚拟机
step4:运行虚拟机
下面以1G安装为例(区别在于:安装界面稍有不同,512M需在安装完成后才能配置网络和主机名,1G在安装过程中可配置):
因为是虚拟机,所以安装过程中提示的“是否检查磁盘”“是否格式化”之类的全部都选最省时的选项吧。
到以下步骤时,点配置网络:地址如下图配置,DNS服务器地址按个人情况配置,
DNS服务器地址查看方法:
开始-》运行-》cmd-》输入命令 “ ipconfig -all ” 找到DNS地址填入下图
step 5 选择好安装模式,设置好用户名密码、根据提示完成安装。
step 6 以root身份登录CentOS
2.配置Master
2.1连接网络
如果在安装过程中已经配置好IP地址等,则打开终端,ping www.baidu.com 看一下是否能ping通。
如果无法ping通,查看VMware相关的服务是否开启了。
查看方法:控制面板-》管理工具-》服务 找到以“VMware”开头的服务,未开启则全部右键开启
仍然无法ping通,则根据一下步骤重新配置一下:
step1: 打开终端,输入 vi /etc/sysconfig/network-scripts/ifcfg-eth0 (新手提示:按[tab]可以自动填充路径的,在终端输入命令时多按[tab]可以减少输入错误)
主要确认以下配置:(物理地址HDDR不要乱改)
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.224.100 //ip地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.224.2 //网关
DNS1=192.168.10.8 //DNS地址
DNS2=192.168.11.8
step2: 输入: service network restart 重启网络服务
ping www.baidu.com 看一下能不能ping 通
2.2修改主机名
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
vi /etc/hosts
替换成以下内容
192.168.224.100 master
192.168.224.71 slaver1
2.3创建工作组和用户
创建用户组:hadoop,然后在此用户组下创建hadoop用户。
[root@ master ~]# groupadd hadoop
[root@ master ~]# useradd -g hadoop -d /home/hadoop hadoop
“hadoop”是所创建的用户名, -d指明“ hadoop”用户的home目录是/home/hadoop)
[root@ master ~]# passwd hadoop [给用户hadoop设置口令]
1). 在真实集群分布模式下,要求集群中所有节点使用相同的用户名,这是hadoop的基本要求。比如,可以使用“hadoop”作为所有节点上统一的用户名。
2). 并且要求在所有节点上安装的hadoop系统具有完全一致的目录结构。
2.4安装JDK和Hadoop
step1:解压putty
step2:运行cmd,把JDK和Hadoop安装文件传送到虚拟机中
具体操作:cd 到putty安装目录下,比如说我的安装路径为 G:\putty,则
C:\user\test>g:
C:\user\test>cd putty
C:\user\test>pscp [jdk所在位置] hadoop@192.168.224.100:/home/hadoop/
C:\user\test>pscp [hadoop所在位置] hadoop@192.168.224.100:/home/hadoop/
step3:在root身份下安装JDK
cd /home/hadoop/
rpm -ivh jdk-8u5-linux-i586.rpm
JDK默认安装在/usr/java/目录下
step4:配置环境变量(此处顺便把HADOOP一起配置了,虽然它还没安装)
vi /etc/profile
在最后面添加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_05
export JRE_HOME=/usr/java/jdk1.8.0_05/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/home/hadoop/hadoop-2.4.0/
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile 使配置生效
在terminal中输入
java -version 看一下是否配置成功,如果配置成功会显示JAVA的版本号等信息。
step5:安装hadoop
su hadoop //用hadoop身份登录
cd ~
tar -zxvf hadoop-2.4.0.gzip.tar ~/ //把hadoop解压到/home/hadoop/目录下
2.5配置hadoop
cd ~/hadoop-2.4.0/etc/hadoop/ 修改以下文件内容:
hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_05/
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.224.100:9000/</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-2.4.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.4.0/hdfs/data</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/home/hadoop/hadoop-2.4.0/yarn/log</value>
</property>
</configuration>
slaves
master
slave1
如果你比较懒,也可以下载上文提供的网盘中的文件,把它们发送到虚拟机中。方法参考2.4中的step2,
如果要传送整个目录
lcd win中的目录
psftp -r 目录名 新目录名
关于psftp更多相关命令:http://blog.csdn.net/greenzb/article/details/4216128
3.安装配置slave
有两种方法:1.克隆master,修改配置变成slave 2.另外安装一台slave
克隆出来的slave配置与master一模一样,如果想要低配一点的slave,则要另外安装。
3.1另外安装slave
安装步骤与上面基本一致,配置时可以偷偷懒从master机里用scp命令 直接把hadoop文件夹等 复制过去(复制过去后注意文件拥有者是否与master中的一致)
3.2克隆
在VMware中有克隆虚拟机的功能,选中要克隆的虚拟机master, 完整克隆一台slave1,完成后启动slave1
step1 修改主机名:
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
step2 修改网络配置:
执行:vim /etc/udev/rules.d/70-persistent-net.rules
把eth1改成eth0, 记下ATTR{address}
执行:vi /etc/sysconfig/networking/devices/ifcfg-eth0
修改:IPADDR=192.168.224.71
修改:HWADDR= 上面记下的ATTR{address}(或者在虚拟机设置中选中“网络适配器”-》“高级” 得到MAC地址)
执行: reboot 重启
重启后ping www.baidu.com 看一下是否能ping通,ping 不通说明网络没配置好
ping不通时: vim /etc/udev/rules.d/70-persistent-net.rules 看一下什么情况,如果多一行eth1 即eth0 eth1都有的情况,把eth0那行删了,eth1改成eth0,再修改ifcfg-eth0把物理地址改成与上面配置中的eth0一致
4.设置SSH无密码登录
step1:打开两台虚拟机,登录到master中,执行如下命令:
$ssh
如果提示Bash : ssh command not found
则
#yum install openssh-clients
安装openssh安装完成后换成hadoop身份登录执行如下命令:
$ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后记得修改文件权限
修改 authorized_keys 权限为600
$chmod 600 /home/hadoop/.ssh/authorized_keys
修改SSH配置文件 转换到root身份 su
# vim /etc/ssh/sshd_config
将下面三行注释去掉,并修改如下:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完后,重启SSH服务 #service sshd restart
验证是否成功 换到hadoop身份 #su hadoop
$ssh master
如果不用输入密码则成功了。
(PS:如果仍然要输入密码 可能是 .ssh权限问题 尝试 $chmod 700 /home/hadoop/.ssh 再 $ssh master
如果修改权限后还不行可能是用户身份的问题 要注意上面带$指令 和 带#指令 用户身份区别)
然后把id_rsa.pub文件追加到slave1 hadoop的authorized_keys中
$scp ~/.ssh/id_rsa.pub hadoop@slave1:~/.ssh/authorized_keys
中间可能需要输入密码 ,按提示输入即可。
打开slave1 登录hadoop
改文件夹 .ssh 权限 为 700
$chmod 700 /home/hadoop/.ssh
同理,按照master上的操作
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$chmod 600 /home/hadoop/.ssh/authorized_keys
修改SSH配置文件 转换到root身份 su
# vim /etc/ssh/sshd_config
将下面三行注释去掉,并修改如下:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
$scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/authorized_keys
现在打开master先后执行如下命令
ssh slave1
ssh master
不需要再输入密码就对了。如果仍然不成功:tail /var/log/secure -n 20 查看登录日志
5.启动Hadoop
执行HDFS格式化命令:
hadoop namenode -format
在master虚拟机中
sh /hadoop/hadoop-2.4.0/sbin/start-all.sh
jps 查看进程
应该有如下进程
ok,搞定!