安装步骤:
1.操作系统与实验硬件准备
2.配置集群的ssh
3.配置Hadoop集群
4.启动Hadoop服务
一、操作系统与实验硬件准备
在虚拟机上准备两个机子,一个作为master一个作为slave1
按用前面(Hadoop单机安装)
完成安装jdk,hadoop和配置环境等
1、设置两台机子的hostname
执行命令$sudo vim /etc/hostname
将文件中的名称改成想要的机器名,这里改成master和slave1
重启一次系统生效
执行命令
$ping master
$ping slave1
正常的话,应该能ping通
2、设置虚拟机的静态ip
master主机设置静态ip,在slave上也要参考设置修改成具体ip
执行命令
$sudo vim /etc/network/interfaces
打开文件修改成以下内容
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.237.131#本机ip
netmask 255.255.255.0
network 192.237.140.0
boardcast 192.168.237.255
gateway 192.168.237.2
dns-nameservers 8.8.8.8 8.8.4.4
3、设置2台机子的hosts文件
执行命令
$sudo vim /etc/hosts
在hosts文件添加如下内容
192.168.237.131 master
192.168.237.132 slave1
二、配置ssh免密码登录
配置ssh免密码登录是让各节点能自动通过安全认证,不影响正常通讯。
安装ssh:在线安装
执行命令
$sudo apt-get install ssh
离线安装
在网上下载离线包,拷贝到ubuntu中按照离线包中的安装说明在本地进行安装
然后确认sshserver是否启动:
$ps -e | grep ssh
配置ssh的实现思路:
1.在每台机子上都使用ssh-******生成public key,private key
1、先在master上,在当前用户目录下生产公钥、私钥对
执行命令
$ssh-****** -t rsa -P ''
2、导入公钥
执行命令
$cat .ssh/id_rsa.pub >> .ssh/authorized_keys
执行完以后,可以在本机上测试下,用ssh链接自己
执行命令
$ssh master
如果提示要输入密码,查看authorized_keys文件权限,如果是属于其他用户的,需要修改该文件给其他用户权限
执行命令
$chmod 644 .ssh/authorized_keys
修改文件权限,然后再测试下ssh master,如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。
3、在其他机器上生成公钥、**,并将公钥文件复制到master上执行命令
在slave1上:
scp .ssh/id_rsa.pub [email protected]:/home/user/id_rsa_1.pub
master中,查看下/home/user目录,应该有新文件id_rsa_1.pub
在master上,导入这个**
执行命令
$cat id_rsa_1.pub >> .ssh/authorized_keys
这样master这台机器上,就有2台机器的公钥了
4 将master上的“最全”公钥,复制到其它机器
在master上
执行命令
$scp .ssh/authorized_keys [email protected]:/home/user/.ssh/authorized_keys
5、验证
在每个虚拟机上,均用命令ssh+其他机器的hostname都能正常无密码链接成功
执行命令
$ssh slave1
$ssh master
三、配置hadoop集群
一共配置7个文件
hadoop-2.6.0/etc/hadoop/hadoop-env.sh
hadoop-2.6.0/etc/hadoop/yarn-env.sh
hadoop-2.6.0/etc/hadoop/core-site.xml
hadoop-2.6.0/etc/hadoop/hdfs-site.xml
hadoop-2.6.0/etc/hadoop/mapred-site.xml
hadoop-2.6.0/etc/hadoop/yarn-site.xml
hadoop-2.6.0/etc/hadoop/slaves
首先执行命令$cd /home/user/hadoop-2.6.0
a)修改hadoop-env.sh 、yarn-env.sh
这二个文件主要是修改JAVA_HOME改成实际本机jdk所在目录位置
执行命令
$gedit etc/hadoop/hadoop-env.sh(及 vietc/hadoop/yarn-env.sh)
打开文件找到下面这行的位置,改成(jdk目录位置,大家根据实际情况修改)
exportJAVA_HOME=/home/hadoop/jdk_1.7
在hadoop-env.sh中加上这句:
exportHADOOP_PREFIX=/home/hadoop/hadoop-2.6.0
b)修改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://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/user/tmp</value>
</property>
</configuration>
注:/home/hadoop/tmp目录如不存在,则先mkdir手动创建
core-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/core-default.xml
c)修改hdfs-site.xml
参考下面的内容修改:
<?xml version="1.0"encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.datanode.ipc.address</name>
<value>0.0.0.0:50020</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:50075</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
hdfs-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
d)修改mapred-site.xml
参考下面的内容修改:
<?xmlversion="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
e)修改yarn-site.xml
<?xmlversion="1.0"?>
<configuration>
<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.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master8025</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8040</value>
</property>
</configuration>
yarn-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
f)修改slaves
执行命令
$vim slaves
编辑该文件,输入
masterslave1
g)分发到集群的其他机器
把hadoop-2.6.0文件夹连同修改后的配置文件,通过scp拷贝到其它2台机器上。
执行命令
$scp -r hadoop-2.6.0/ [email protected]: hadoop-2.6.0
四、测试hadoop配置
在master上启用NameNode测试
执行命令
$hdfs namenode -format#注意是在master上格式化
先格式化
15/02/12 21:29:53 INFO namenode.FSImage: Allocated newBlockPoolId:BP-85825581-192.168.187.102-1423747793784
15/02/12 21:29:53 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.
等看到执行信息有has been successfully formatted表示格式化ok
五、启动hadoop集群
执行命令
$start-dfs.sh
$start-yarn.sh
启动完成后,输入jps查看进程
执行命令
$jps
master显示
slave1显示
表示启动成功
将master上的hadoop目录复制到slave1机器上
cd先进入主目录
scp -r hadoop-2.6.0 [email protected]:/home/user/
slave1上的hadoop临时目录(tmp)及数据目录(data),仍然要先手动创建。