一, 配置信息
机器是64位,所以操作系统、软件都是64位的。
操作系统:CentOS6.2(64位);
Hadoop是hadoop-1.2.1-1.x86_64.rpm;
JDK是jdk-7u45-linux-x64.tar.gz;
以下所有操作以root身份执行。
二, 机器信息分布
1, Hadoop集群
集群由5台安装Linux环境的机器构建。电脑是联想 4220AN6 Tower,每台电脑具体配置: 英特尔 Core i3 530双核处理器,主板是英特尔 3450 芯片组,内存4G,硬盘500G。
集群中带宽是1000兆。
集群中网卡、交换机、网线均为1000兆。
其中一台机器是Master节点,即主节点,另外四台是Slave节点,即数据节点。这五台电脑彼此间通过路由器相连,从而实现相互通信以及数据传输。他们都可以通过路由器访问Internet。
2, 集群内电脑详细信息
集群内5台电脑机器名分别是master、slave1、slave2、slave3、slave4。每台电脑用root操作Hadoop,下面描述了集群内master节点和slave1节点的机器信息。
(1) master服务器
机器 |
详细信息 |
机器名称 |
master |
IP地址 |
172.23.7.160 |
最高用户名 |
root |
最高用户密码 |
123456 |
(2) slave1服务器
机器 |
详细信息 |
机器名称 |
slave1 |
IP地址 |
172.23.7.161 |
最高用户名 |
root |
最高用户密码 |
123456 |
三, CentOS安装配置
集群内每台电脑安装CentOS6.2操作系统。
四, 网络配置
1, 集群内电脑IP配置如下:
机器 |
IP地址 |
master |
172.23.7.160 |
slave1 |
172.23.7.161 |
slave2 |
172.23.7.162 |
slave3 |
172.23.7.163 |
slave4 |
172.23.7.164 |
2, 配置防火墙
集群内每台电脑关闭防火墙,下面以master为例说明
(1) 输入setup,进入防火墙配置界面
(2) 选择Firewall configuration,Run Tool。点击“Run Tool”,下一步。
(3) 将Firewall后面中括号内的星号去掉,变成disable,点击OK下一步。
(4) 选中“yes”,下一步。
(5) 选择“Quit”退出即可。
3, 查看当前机器名称
用hostname命令显示机器名称
4, 修改当前机器名称
如果查看机器名不是我们想要的,需要修改机器名。通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规划的名称。这个"/etc/sysconfig/network"文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。"/etc/sysconfig/network"的设定项目如下:
用下面命令进行修改当前机器的主机名(备注:修改系统文件一般用root用户)
5, 修改IP地址
假定我们的机器连IP在当时安装机器时都没有配置好,那此时我们需要对"ifcfg-eth0"文件进行配置,该文件位于"/etc/sysconfig/network-scripts"文件夹下。
在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg- eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3,……。
这里面的文件是相当重要的,涉及到网络能否正常工作。设定形式:设定值=值设定项目项目如下:
用下面命令修改IP。
下面以master为例配置IP地址:
IPADDR IP后面写IP地址,172.23.7.160
GATEWAY 后面写网关,172.23.7.1
NETMASK后面写子网掩码,255.255.255.0
DNS1后面写DNS服务器,202.202.32.33
6, 配置hosts文件
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应主机名和IP地址,用户在进行网络连接时,首先查找该文件,寻找对应主机名对应的IP地址。
需要在每台电脑上配置hosts文件,配置操作系统,下面以master节点为例介绍:
(1) root 身份打开/etc /hosts 文件,命令:
(2) 在hosts中写上本集群内所有电脑IP地址和对应主机名
(3) 配置是否成功,在集群内任一电脑,ping其他电脑用户名,如果ping通了,则说明成功。比如在master上ping slave1
如上图说明成功了。
五, 配置SSH
1、 在Hadoop集群中,节点A连接到节点B时,需要在A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到B。当A过 SSH连接B,B会生成一个随机数并用A公钥对随机数进行加密,并发送给A。A收到加密数之后再用私钥解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密 码。重要过程是将客户端A的公钥复制到B上。在Hadoop集群下,需要任一台电脑可以无密码登陆其他电脑,需要将每台电脑的公钥发送到集群内所有电脑上。
2、 在master上生成密码对流程如下:
(1) 生成密钥对:
a)跳转到/root/.ssh目录下:
c)在.ssh文件夹下生成密钥对
[root @master .ssh]# ssh-keygen -t rsa
之后一直点击回车键默认。
此时,会在/root/.ssh下生成了id_rsa(私钥),id_rsa.pub(公钥);
3、 分别在集群其他电脑上执行第2步操作,都会生成密钥对id_rsa.pub和id_rsa,
4、 配置authorized_keys
将集群内所有电脑的id_rsa.pub都复制到authorized_keys上,再将authorized_keys存储到所有电脑上。
(1)在master电脑上,把生成的id_ras.pub内容复制到authorized _keys中;执行指令:
如果authorized_keys不存在,则生成authorized_keys,再将id_rsa.pub内容复制到authorized_keys中。
(2)将authorized_keys复制到slave1电脑上:
按照(1)步,将slave1生成密钥对添加到authorized_keys:
(3)依次操作将slave2,slave3,slave 4上的密钥对添加到authorized_keys上。
下一步,将最新authorized_keys复制到集群内所有的电脑上,和id_rsa.pub存储在同一目录下。
六, 安装JDk
软件准备:jdk-7u45-linux-x64.tar.gz,集群内所有电脑都需要安装JDK,我们可以在master上安装好JDK后,将安装文件复制到其他电脑相同目录下即可。将JDK统一安装在所有电脑的/usr/local目录下;下面以master电脑安装JDK为例介绍(以root安装):
注:如果是jdk是bin格式,需要赋值,chmod 755 jdk-7u45-linux-x64.bin,然后./jdk-7u45-linux-x64.bin安装jdk,会在同一目录下产生安装目录。
1、 查看默认的JDK命令:
[root@master local]$ java -version
提示现在的jdk版本是1.6.0_22,需要安装新版JDK。
2、 安装jdk,将jdk解压缩
[root @master local]# tar –zxvf jdk-7u45-linux-x64.tar.gz
之后,在/usr/local目录下产生一个新的 jdk1.7. 0_45文件夹
3、 设置环境变量
打开配置文件profile,命令:
[root @master local]# vim /etc/profile
在空白处添加如下信息:
JAVA_HOME=/usr/local/ jdk1.7. 0_45
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
4、 让系统配置立即生效,不用重启系统,终端输入命令:
[root @master local]# source /etc/profile
5、 查看版本:
[root @master local]# java -version
显示我们安装的新版本是jdk1.7.0_45,说明JDK安装成功。
6、 将主节点master上安装好的jdk复制到其他电脑相同目录下。此处以复制到slave1为例。
a) 将jdk的解压缩文件复制到slave1电脑上
[root @master local]# scp -r jdk1.7.0_45 root@slave1:/usr/local
a) 将主节点master上的JDk配置文件”/etc/profile”拷贝到其他子节点上
[root @master local]# scp /etc/profile slave1:/etc/profile
在slave1电脑上执行一下语句,使java配置立即生效。
[root @master local]# source /etc/profile
b) 在子节点上查看jdk是否安装成功,结果显示jdk1.7.0_45,说明安装成功。
[root @slave1Desktop]# java –version
七, 安装Hadoop集群
1、 集群内所有电脑都需要安装hadoop,我们将hadoop统一安装在所有电脑的/usr/local目录下;下面以master电脑安装hadoop为例介绍(以root用户安装):
2、 输入指令“rpm –ivh hadoop-1.2.1-1.x86_64.rpm”安装hadoop:
3、 安装文件会在/etc下生成hadoop文件,可在此处配置hadoop配置文件,将hadoop运行指令放到/usr/sbin目录下,下面配置hadoop配置文件,总共需要配置5个。
(1) 配置core-site.xml,修改每个属性的value值,
core-site.xml配置HDFS和MapReduce的。
<!—core-site.xml-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://172.23.7.160:9000</value>
</property>
(2) 设置完步骤(2)后,在/home/hadoop目录下创建一个名为tmp的文件夹
(3) 返回到/etc/hadoop目录下,继续配置文件,下面配置hdfs-site.xml
hdfs-site.xml配置HDFS的。
<!—hdfs-site.xml-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
注:副本个数,不配置默认是3此处写2.
(4) 配置mapred-site.xml
mapred-site.xml配置MapReduce的。
<!—mapred-site.xml-->
<property>
<name>mapred.job.tracker</name>
<value>172.23.7.160:9001</value>
</property>
(5) 配置masters文件,加入namenode的节点名,并删除前面的内容
172.23.7.160
注:此处填写主节点主机名或IP皆可。
(6) 配置slaves文件, 加入所有datanode的节点名
172.23.7.161
172.23.7.162
172.23.7.163
172.23.7.164
注:此处填写所有数据节点的主机名或IP地址
4、 在其他4台电脑上分别执行“步骤2“,然后将master节点,/etc/hadoop目录下的core-site.xml、mapred-site.xml、hdfs-site.xml、masters、slaves五个文件复制到其余4台电脑相应目录下。
5、 启动hadoop集群(主节点)
(1) 格式化文件系统:
注:在第一次启动hadoop集群时候,需要格式化文件系统,以后不需要此操作。
(3) 启动hadoop集群
此时提示你,没有权限执行此操作。start-all.sh指令存在于/usr/sbin目录下,需要赋予root用户权限,root用户可以对sbin文件夹进行任何操作。
chmod –R 777 /usr/sbin
6、 查看运行结果
(1) 在主节点master上用java自带的小工具jps查看进程
进程中必须包含NameNode和JobTracker这两个,不然说明安装失败。
(2) 在其他数据节点下用java自带的小工具jps查看进程
进程必须包含DataNode和TaskTracker两个,不然说明安装失败。