本安装为分布式安装,一主节点,一从节点,安装环境为centos6系统。hadoop的安装使用phq用户,未新建hadoop用户安装
1 配置时钟同步
(1)自动同步时间
- 该项需要在主节点和从节点配置。使用linux命令为:
[root@localhost phq]# crontab -e
- 该命令是vi编辑命令,按i进入插入模式,键入下面代码:
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
(2) 手动同步时间
- 直接在终端中运行以下命令:
[root@localhost phq]# /usr/sbin/ntpdate cn.pool.ntp.org
2 配置主机名
- 使用vi编辑主机名,将主节点的主机名改为master,从节点的主机名改为slave
[root@localhost phq]# vim /etc/sysconfig/network
修改如下:
NETWORKING=yes
HOSTNAME=master
NTPSERVERARGS=iburst
确认修改命令生效
[root@localhost phq]# hostname master
- 从节点用相同的操作修改主机名
3 配置网络
- 根据实际,主从节点配置静态ip。最新vmware虚拟机已默认使用静态ip,不需要配置。
4 关闭防火墙和selinux
- [x] 关闭主从节点机器的防火墙和selinux
(1) 关闭防火墙
- 在终端中执行以下命令关闭防火墙,重启后生效
[root@master phq]# chkconfig iptables off
(2) 关闭selinux
- 在终端中编辑/etc/selinux/config,找到SELINUX 行修改成为:SELINUX=disabled
[root@master phq]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
5 配置hosts
- 在主从节点机器上编辑主机名列表
[root@master phq]# vim /etc/hosts
添加如下内容:
192.168.231.131 master
192.168.231.132 slave
6 安装jdk
- 主从节点都安装jdk,使用rpm方式安装。
[root@master software]# rpm -ivh jdk-8u91-linux-x64.rpm
- 配置环境变量
[root@master ~]# vim /etc/profile
在后面加入:
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
在普通用户下配置
[phq@master ~]$ vim .bash_profile
在后面加入:
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
7 配置免密钥登录
- 该部分的操作在phq用户下操作。
(1) 主节点
- 在终端生成密钥,命令如下(一路按回车生成密钥):
[phq@master ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/phq/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/phq/.ssh/id_rsa.
Your public key has been saved in /home/phq/.ssh/id_rsa.pub.
The key fingerprint is:
18:66:c2:b9:3e:88:b1:f9:d5:c5:09:e3:63:54:9a:ce phq@master
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| . . + |
| + X |
| X * . |
|. . E S |
| = o o o |
|+ . + . |
| . . . |
| . |
+-----------------+
- 复制密钥文件
[phq@master .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 修改authorized_keys文件权限
[phq@master .ssh]$ chmod 600 ~/.ssh/authorized_keys
- 将authorized_keys文件复制到slave节点
[phq@master .ssh]$ scp ~/.ssh/authorized_keys phq@slave:~/
(2) 从节点
- 在终端生成密钥,命令如下(一路按回车生成密钥):
[phq@slave ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/phq/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/phq/.ssh/id_rsa.
Your public key has been saved in /home/phq/.ssh/id_rsa.pub.
The key fingerprint is:
eb:6b:5a:9f:fd:5c:29:a8:4c:79:9d:bb:fb:2d:7e:8d phq@slave
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| |
| S |
| .. o . .|
| oo o + oo|
| o+.oo .E.+|
| .oo+o .*B+.|
+-----------------+
- 将主节点的authorized_keys文件移动到.ssh目录:
[phq@slave ~]$ mv authorized_keys ~/.ssh/
- 修改authorized_keys文件的权限
[phq@slave .ssh]$ chmod 600 authorized_keys
(3) 验证免密钥登录
- 在主节点上执行ssh命令,出现如下命令说明配置成功
[phq@master .ssh]$ ssh slave
Last login: Thu Sep 1 16:44:16 2016 from 192.168.231.1
8 hadoop配置部署
- 每个节点的hadoop配置基本相同,在主节点操作,然后复制到从节点。
(1)解压安装包
[phq@master ~]$ tar -xvf ~/hadoop-2.5.2.tar.gz
(2)配置hadoop-env.sh
- 该部分只需要配置jdk路径。在文件靠前部分找到
# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
修改为以下代码:
export JAVA_HOME=/usr/java/jdk1.8.0_91
(3)配置yarn-env.sh
- 该部分只需要配置jdk路径。在文件靠前部分找到
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
修改为以下代码(去掉#)
# some Java parameters
export JAVA_HOME=/usr/java/jdk1.8.0_91
(4)配置核心组件core-site.xml
- 使用下面的代码替换core-site.xml的内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/phq/hadoopdata</value>
</property>
</configuration>
(5)配置系统文件hdfs-site.xml
- 使用下面的代码替换hdfs-site.xml的内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
(6)配置yarn-site.xml
- 使用下面的代码替换yarn-site.xml的内容
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>
(7)配置计算框架mapred-site.xml
- 复制mapred-site.xml.template文件为mapred-site.xml
[phq@master hadoop]$ cp mapred-site.xml.template mapred-site.xml
- 使用以下代码替换mapred-site.xml的内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(8)在主节点配置slaves文件
- 使用以下代码替换slaves文件中的内容
slave
(9)复制到从节点
[phq@master ~]$ scp -r hadoop-2.5.2 phq@slave:~/
9 启动集群
(1)配置hadoop启动的环境变量
- 该部分主从节点都需要配置
[phq@master ~]$ vim .bash_profile
文件末尾追加以下内容:
#HADOOP
export HADOOP_HOME=/home/phq/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后使文件生效
[phq@master ~]$ source ~/.bash_profile
(2)创建数据目录
- 该部分主从节点都需要配置
[phq@master ~]$ mkdir /home/phq/hadoopdata
(3)启动hadoop集群
- 格式化文件系统
- 在主节点格式化文件系统
[phq@master hadoop]$ hdfs namenode -format
- 如果没有出现Exception/Error则表示格式化成功
- 启动hadoop
- 使用start-all.sh启动集群
[phq@master sbin]$ ./start-all.sh
- 查看进程
- [x] 在终端执行jps命令,在主节点可以看到4个进程:
[phq@master sbin]$ jps
4226 ResourceManager
4503 Jps
3898 NameNode
4077 SecondaryNameNode
从节点可以看到3个进程:
[phq@slave ~]$ jps
3267 Jps
3160 NodeManager
3065 DataNode