主机名称 | IP地址 | 功能 |
master | 192.168.1.1 | NodeManager NameNode ResourceManager DataNode |
slave1 | 192.168.1.2 | NodeManager DataNode SecondaryNameNode |
slave2 | 192.168.1.3 | NodeManager DataNode |
备注: 所有机子都需要配置 1.JDK 2.SSH免登陆 3.Hadoop集群 |
JDK的配置:
/*安装Hadoop集群时要确保以下几个方面
1.本机与虚拟机之间是否可以通信(Ping)。如果不行检查下面
1.1本机防火墙关闭(开启情况是本机可以ping虚拟机,虚拟机不能ping本机)
1.2虚拟机是克隆的情况(按照Linux文档中,修改ip地址等方法)
1.3虚拟机设置--网卡是否是仅主机模式或者桥接模式:仅主机模式需要检查VMware1网卡设置与虚拟机网卡设置是否匹配。桥接模式是为了让虚拟机可以连接外网,只需要改该虚拟机网卡信息即可(网关)
2.虚拟机与虚拟机之间是否可以通信(Ping)。
参考上面检查
*/
//关闭本机网络管理
# /etc/init.d/NetworkManager stop
# chkconfig NetworkManager off
//清空和关闭防火墙
# iptables -F
# chkconfig iptables off
# service iptables save
//更改主机名称
# vi /etc/sysconfig/network
//更改主机与ip映射
# vi /etc/hosts
//安装JDK(本文用到的是手动解压安装)
# tar -xvf jdk-7u79-linux-x64.tar.gz
# mv jdk1.7.0_79/ jdk
//修改系统环境变量
# vi /etc/profile
export JAVA_HOME=/home/jdk/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
//使修改后的系统生效
# source /etc/profile
SSH免登陆的配置:
计算机A每次SSH远程连接计算机B时,都需要输入密码。当有些软件需要频繁使用SSH连接其他计算机时,这个时候需要人工填写计算机B的密码,这个会造成大量无用操作,不利于程序的使用。
在为了避免这类问题的发生,而且也要兼顾安全问题(设置SSH免密码登陆后,SSH这台计算就不需要密码即可登陆,存在安全隐患),使用公钥和私钥方式解决SSH免密码登陆问题,而且只在一边做,另一边不做,这样也达到了安全的问题。一般是那台机器需要SSH远程其他机器,就在这台机器上设置SSH免登陆操作。
"公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对
//转自官方密钥的配置方法(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html)
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
Hadoop集群(全分布式)的配置:
修改hadoop-env.sh文件
将hadoop-env.sh文件中的
exportJAVA_HOME=${JAVA_HOME} 修改为环境变量所在地
exportJAVA_HOME="/home/jdk"
修改core-site.xml文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
修改hdfs-site.xml文件
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoopdata/dfs/data</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>slave1:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改mapred-site.xml文件
命令如下:
//首先激活mapred-site.xml文件
# mvmapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
</property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
修改yarn-site.xml文件
#vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
修改slave文件
#vi /etc/hadoop/slave
将所有需要配置成slave类型的机器的机器名写在其内部即可.
注意:每个机器名占一行。
master
slave1
slave2
//将配置好的jdk文件夹和Hadoop文件夹发送给slave1和slave2机子
# scp -r /jdk目录 slave1:/jdk目录
# scp -r /jdk目录 slave2:/jdk目录
# scp -r /hadoop目录 slave1:/hadoop目录
# scp -r /hadoop目录 slave2:/hadoop目录
//同时将环境变量配置文件也拷贝给slave1和slave2机子
# scp -r /etc/profile slave2:/etc/
//启动Hadoop集群
//启动之前先格式化,只需要一次即可
#hadoop namenode-format
#start-all.sh