Hadoop分布式安装(超详细)

一,系统的基本配置

1,主机名的修改

修改/etc/sysconfig/network文件中HOSTNAME=hadoop1

2、IP地址配置

注意:如果虚拟机可以连接网络,可以跳过这个步骤

修改/etc/sysconfig/network-scripts/ifcfg-eth0,修改后的信息如下:

DEVICE="eth0"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
HWADDR="00:0C:29:59:35:85"
IPV6INIT="no"
IPADDR=10.254.231.185 #本机ip,可用ifconfig查看
NETMASK=255.255.0.0  #子网掩码,可用ifconfig查看
GATEWAY=10.254.0.1  #网关,使用ip route show查看
DNS1=10.254.0.1  #可以与GATEWAY保持一致
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9a604f00-87f1-4d6d-8cb3-6eac05a8ac01"

说明:仅加粗部分需要改动

3、主机名与ip地址做映射

修改/etc/hosts文件,修改后的信息如下:

#127.0.0.1   localhostlocalhost.localdomain localhost4 localhost4.localdomain4
#::1localhostlocalhost.localdomain localhost6 localhost6.localdomain6

10.254.231.185  hadoop1

用途:通过映射之后,局域网中,可以通过这个名字定位具体的计算机,集群各台服务器之间相互访问更方便。

4、防火墙关闭

chkconfig --level 0123456 iptables off

方便局域网中不同计算机之间的通信。(没有关闭防火墙的话,部分服务不能跨计算机进行访问,即部分端口是关闭的)

5、selinux关闭

(1)检查selinux状态
执行getenforce命令,如果结果显示 permissive 或disabled,你可以跳过这一步
(2)打开/etc/selinux/config文件,修改SELINUX=enforcing 为SELINUX=permissive
(3)重启系统

方便局域网中不同计算机之间的通信。
注意:SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。

6、JDK安装

从网上下载jdk1.7以上64位linux版本。在此,我们安装jdk-7u60-linux-x64.rpm版本,下载后执行rpm -ivh jdk-7u60-linux-x64.rpm命令进行安装。然后用java -version 查看,如果显示下边信息,说明安装成功。

rpm -ivh jdk-7u60-linux-x64.rpm  #安装jdk命令
[root@hadoop1 ~]# java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)

在/etc/profile文件里添加JDK的环境变量:

export  JAVA_HOME=/usr/java/default
export  PATH=$PATH:$JAVA_HOME/bin

二、 安装Hadoop

1、Hadoop的下载和解压

我从网上下载Hadoop的安装包,然后在所有的主机上解压即可(本次我们下载的hadoop-2.6.0-cdh5.10.1.tar.gz)。解压命令如下:

tar –xvf hadoop-2.6.0-cdh5.10.1.tar.gz

2、Hadoop系统环境变量的配置

在所有主机的/etc/profile文件中添加下边的信息

export HADOOP_HOME=/root/hadoop-2.6.0-cdh5.10.1
export PATH=$PATH:$HADOOP_HOME/bin

注释:/root/hadoop-2.6.0-cdh5.10.1实我们Hadoop的解压路径

四、 配置Hadoop

在所有的主机上做以下配置(也可以在一台主机上配置完后,拷贝到其他主机)。所有配置的都在/root/hadoop-2.6.0-cdh5.10.1/etc/hadoop目录下(Hadoop解压后目录里的etc/hadoop里)。
注意:去到自己安装Hadoop安装目录里的/etc/hadoop里面打开下面文件
1、core-site.xml的配置

<configuration>
<property>
<name>fs.defaultFS</name> #hdfs访问的唯一入口
<value>hdfs://hadoop1:8020</value>
</property>
</configuration>

2、hdfs-site.xml文件的配置

<configuration>
<property>
<name>dfs.permissions.superusergroup</name>
<value>root</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
<description>
       The address and the base port on which the dfsNameNode Web UI will listen.
</description>
</property>
<property>
<name>dfs.secondary.http-address</name>
<value>hadoop2:50070</value>  #因为我们是装分布式,不改动这里,如果是伪分布式可以将这部分删除
<description>
       The address and the base port on which the dfsNameNode Web UI will listen.
</description>
</property>
</configuration>

3、mapred-site.xml配置

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

4、yarn-site.xml配置

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>
<property>
<description>Classpath for typical applications.</description>
<name>yarn.application.classpath</name>
<value>
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/data/yarn/logs</value>
</property>
<property>
<name>yarn.log.aggregation-enable</name>
<value>true</value>
</property>
<property>
<description>Where to aggregate logs</description>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/var/log/hadoop-yarn/apps</value>
</property>
</configuration>

6、 添加JAVA_HOME到hadoop-env.sh文件里
添加内容如下:

export JAVA_HOME=/usr/java/default

7、 添加所有的主机名到slaves文件里,如下所示:

hadoop1
hadoop2
hadoop3

三,分布式安装配置

1、创建新的虚拟机

在前边的伪分布式中我们已经有一台虚拟机hadoop1,接下来我们可以在hadoop1的基础之上克隆两台虚拟机。废话不多说我们可是克隆新的虚拟机,克隆前先关闭hadoop1。

(1)右击上图中的hadoop1,在下拉框中点击“管理”,然后再点击“克隆”,进入克隆虚拟机向导界面:

在这里插入图片描述

(2)点击“下一步”按钮,结果如下图:
在这里插入图片描述

(3)点击“下一步”按钮,结果如下图:
在这里插入图片描述

(4)选择“创建完整克隆”,然后点击“下一步按钮”,结果如下图:
在这里插入图片描述

(5)在虚拟机名称栏,设置虚拟机名称,此处我们设置为hadoop2,位置栏设置虚拟机创建的位置,此处我们设置为G:\vm\hadoop2,然后点击“完成”按钮,等待创建。结果如下图。
在这里插入图片描述

(6)创建完成后,如下图:
在这里插入图片描述

7、点击“关闭”按钮。这个时候我们进入到G:\vm目录会看到多了一个hadoop2目录,此目录就是我们刚才创建的hadoop2虚拟机。
在这里插入图片描述

2、hadoop2虚拟机配置和整理

(1)设置hadoop2的内存为1G(根据自己电脑配置进行设置,因为我的电脑内存为8G,所以hadoop1配置2G,hadoop2和hadoop3分别配置1G)。

右击hadoop1,选择设置,进入如下界面

在这里插入图片描述

(2)进入hadoop2虚拟机,需要清除DataNode数据写入目录信息(因为目录里有DataNode的编号信息,如不清除,DataNode只能启动一个)。登陆hadoop2后切换到root账号,root密码为:cloudera(我们在创建hadoop1时设定的密码)。然后执行删除命令:

切换到root账号的命令:

su root
然后输入你的账号密码就可以切换到root账号
清楚DataNode数据写入目录信息命令:
rm -rf /data/dn/*

(3)修改hadoop2系统内部的主机名为hadoop2
详细步骤参考本文档第一大项中的第1小项。

(4)设置hadoop2的mac地址
因为是克隆hadoop1,克隆后的eth0的MAC地址跟hadoop1一样,所以我们需要重新设定mac地址。详细步骤如下:
执行下边命令删除/etc/udev/rules.d/70-persistent-net.rules,然后重启hadoop2。

rm -rf /etc/udev/rules.d/70-persistent-net.rules

Hadoop重启后

修改/etc/sysconfig/network-scripts/ifcfg-eth0 中HWADDR
跟/etc/udev/rules.d/70-persistent-net.rules中的ATTR{address}一样。

也就修改mac地址一样。

(5)修改主机IP地址
详细修改方法参考本文档第一大项中第2小项。

同样的方法克隆hadoop3。

四、SSH免密码登陆配置

(1)在hadoop1、hadoop2和hadoop3的root账户下分别执行

ssh-keygen -t rsa

(2)在hadoop1上执行以下命令

cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys

(3)把hadoop1上/root/.ssh/authorized_keys文件拷贝到hadoop2 /root/.ssh/目录里
在hadoop1上执行以下命令,回车后输入密码:cloudera

scp /root/.ssh/authorized_keys root@192.168.1.152:/root/.ssh
注释:192.168.1.152代表hadoop2的ip地址

(4)hadoop2上执行以下命令

cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys

(5)把hadoop2上的/root/.ssh/authorized_keys再拷贝到hadoop3上,在hadoop2上行下边命令,回车后输入密码:cloudera

scp /root/.ssh/authorized_keys root@192.168.1.153:/root/.ssh
注释:192.168.1.153代表hadoop3的Ip地址

(6)hadoop3上执行以下命令

cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys

(7)把hadoop3上的/root/.ssh/authorized_keys文件分别拷贝到hadoop1和hadoop2上,然后在hadoop3上执行以下命令

scp /root/.ssh/authorized_keys root@192.168.1.151:/root/.ssh


scp /root/.ssh/authorized_keys root@192.168.1.152:/root/.ssh

5、配置主机名和IP地址映射
hadoop是以主机名进行通信的,所以我们需要配置主机名与IP地址的映射。
在hadoop1、hadoop2和hadoop3的/etc/hosts文件里分别添加以下信息:

192.168.1.151  hadoop1
192.168.1.152  hadoop2
192.168.1.153  hadoop3

6、进程禁用
(1)前边我们在hadoop1上搭建了伪分布式,上边安装了hadoop集群所有的进程。根据我们分布式规划,我们需要关闭SecondaryNameNode和ResourceManager进程。
在hadoop1执行下边命令:

chkconfig hadoop-hdfs-secondarynamenode off

chkconfig hadoop-yarn-resourcemanager off

(2)hadoop2是从hadoop1上克隆过来的,根据我们分布式规划,我们需要关闭NameNode、ResourceManager和JobHistoryServer。

chkconfig hadoop-hdfs-namenode off

chkconfig hadoop-yarn-resourcemanager off

chkconfig hadoop-mapreduce-historyserver off

(3)hadoop3也是从hadoop1上克隆过来的,根据我们分布式规划,我们需要关闭NameNode、SecondaryNameNode和JobHistoryServer。

chkconfig hadoop-hdfs-namenode off

chkconfig hadoop-hdfs-secondarynamenode off

chkconfig hadoop-mapreduce-historyserver off

7、修改resourcemanager的主机名
修改/etc/hadoop/yarn-site.xml中的yarn.resourcemanager.hostname为hadoop3(因为我们的resourcemanager在hadoop3上部署着)。

<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>

注释:因为我们是直接克隆hadoop1所以需要做这些修改

8、格式化Namode
在hadoop1上执行下边命令:

hadoop namenode -format

首次格式化只需要执行上述命令即可;再次格式化时,namenode会产生新的文件系统版本,与datanode目录下文件系统版本不一致(/data/dn/current))。
解决办法:
1、 先执行第九步的操作,然后再执行该格式化命令。
2、 将所有datanode中的文件/data/dn/current/VERSION中cluster的值改成与/data/nn/current/VERSION中的cluster一致。

9、删除DataNode本地路径数据
在hadoop1、hadoop2和hadoop3上分别删除/data/dn/current,执行以下命令

rm -rf /data/dn/current

10、启动服务
(1),单独启动

hadoop1:

cd /root/hadoop-2.6.0-cdh5.10.1/sbin
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start nodemanager

hadoop2:

cd /root/hadoop-2.6.0-cdh5.10.1/sbin
./hadoop-daemon.sh start secondarynamenode
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start nodemanage



hadoop3:
cd /root/hadoop-2.6.0-cdh5.10.1/sbin
./hadoop-daemon.sh start datanode
./yarn-daemon.sh start resourcemanager
./yarn-daemon.sh start nodemanager

(2)、 批量启动

在任一主机上(所在主机上的slaves文件必须配置)进入/root/hadoop-2.6.0-cdh5.10.1/sbin目录后执行./ start-dfs.sh和./start-yarn.sh。

五、 验证集群是否成功

通过web界面来查看集群

在浏览器中输入http://hadoop1:50070和http://hadoop3:8088,能够看到如下界面,说明机器启动成功。

只要在网页上看到hadoop的页面,说明集群配置成功
不一定需要两个网页都打开,只要有一个网页可以打开即可
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值