Hadoop完全分布式安装(None Safe Mode)

本次安装是在CentOS系统上安装。

一、安装内容

1.1. 安装jdk;
1.2. ssh免秘钥登录;
1.3. 关闭防火墙;
1.4. 安装Hadoop集群;

二、Hadoop集群架构

这里写图片描述
本次环境搭建使用3台机器,有1台是NameNode,其它2台是DataNode,详细信息如下:

机器名运行进程备注
CDH0NameNode/SecondaryNameNode/ResourceManagerNameNode节点
CDH1NodeManager/DataNode数据节点
CDH0NodeManager/DataNode数据节点
三、安装jdk

Oracle官网下载JDK的rpm包,然后使用rpm命令进行安装;安装成功后,使用java命令可用。

rpm -ivh jdk*.rpm
四、ssh免秘钥登录

在cdh0上,使用ssh-keygen生成免密登录的私钥-公钥对,然后把这个

#生成免密登录的私钥-公钥对
#会产生id_rsa私钥和id_rsa.pub公钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#把cdh0的公钥加入到本机或则cdh1、cdh2的授权keys中
#则在cdh0通过ssh ipaddr可以不通过密码直接登录其它主机了
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

可是cdh1、cdh2不能免密登录其它主机,那么就要把所有主机的免密公钥都复制到authorized_keys文件中,具体做法如下:

#生成cdh0/cdh1/cdh2免密登录的私钥-公钥对(3台主机上都要运行1次)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#拷贝cdh1的公钥到cdh0上(cdh1上执行)
scp ~/.ssh/id_rsa.pub root@cdh0:~/.ssh/id_rsa_1.pub
#拷贝cdh2的公钥到cdh0上(cdh2上执行)
scp ~/.ssh/id_rsa.pub root@cdh0:~/.ssh/id_rsa_2.pub
#合并公钥(cdh0上执行)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa_1.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa_2.pub >> ~/.ssh/authorized_keys
#分发authorized_keys给cdh1/cdh2
scp ~/.ssh/authorized_keys root@cdh1:~/.ssh/
scp ~/.ssh/authorized_keys root@cdh2:~/.ssh/

这是在任意一台机器上,即可免秘钥ssh ipaddr了。

五、关闭防火墙

防止防火墙拦截了某些端口,这里先把防火墙关掉好了。CentOS 7里面使用的firewalld防火墙,那么使用如下命令关闭防火墙:

service firewalld stop
六、Hadoop集群配置

配置Hadoop,可以先在每台机器上解压hadoop安装包,然后再某台机器上配置所有配置文件,最后分发到所有机器上即可。配置过程如下,我选择在cdh0上进行配置,cd到hadoop主目录下的etc/hadoop中。

6.1. 在cdh0/cdh1/cdh2上解压hadoop安装包(我都解压在/root目录中)

tar xzvf hadoop-2.8.0.tar.gz

6.2. 配置hadoop-env.sh修改hadoop使用的Java环境变量
使用vi打开hadoop-env.sh,修改前和修改后的内容对比如下:

#修改前的配置
# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
#修改后的配置(我的JAVA_HOME在usr目录)
# The java implementation to use.
export JAVA_HOME=/usr
#创建hadoop的NameNode和DataNode所需要的目录
mkdir /hadoop
cd /hadoop
mkdir name
mkdir data
mkdir tmp

6.3. 配置etc/hadoop/core-site.xml

<configuration>
    <property>   
        <name>hadoop.tmp.dir</name>   
        <value>/hadoop/tmp</value>   
    </property>   
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://cdh0:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

6.4. 配置etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/hadoop/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/hadoop/data</value>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
    <property>    
         <name>dfs.namenode.secondary.http-address</name>    
         <value>cdh0:9001</value>
    </property>
    <property>   
        <name>dfs.replication</name>   
        <value>2</value>   
    </property>
    <property>    
         <name>dfs.webhdfs.enabled</name>    
         <value>true</value>    
    </property> 
</configuration>

6.5 配置etc/hadoop/yarn-site.xml

<configuration>
    <property>    
      <name>yarn.resourcemanager.address</name>    
      <value>cdh0:18040</value>    
    </property>    
    <property>    
      <name>yarn.resourcemanager.scheduler.address</name>    
      <value>cdh0:18030</value>    
    </property>
    <property>    
      <name>yarn.resourcemanager.resource-tracker.address</name>    
      <value>cdh0:18025</value>    
    </property> 
    <property> 
      <name>yarn.resourcemanager.admin.address</name>    
      <value>cdh0:18141</value>    
    </property> 
    <property>    
      <name>yarn.resourcemanager.webapp.address</name>    
      <value>cdh0:18088</value>    
    </property>
    <property>    
      <name>yarn.nodemanager.aux-services</name>    
      <value>mapreduce_shuffle</value>    
    </property> 
</configuration>

6.6 配置etc/hadoop/mapred-site.xml

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

6.7 配置slaves

cdh1
cdh2

6.8 分发配置文件
在hadoop主目录/etc/hadoop下,执行如下命令,把这些配置文件分发到cdh1/cdh2主机上:

scp * root@cdh1:~/hadoop-2.8.0/etc/hadoop/
scp * root@cdh2:~/hadoop-2.8.0/etc/hadoop/

6.9 给hadoop配上环境变量

#打开系统环境变量配置文件
vi /etc/profile
#在文件中增加这两行,添加环境变量
export HADOOP_HOME=/root/hadoop-2.8.0
export PATH=$PATH:$HADOOP_HOME/bin
#使得系统环境变量生效
source /etc/profile

同样,你也可以把这个profile分发到所有主机上,这样方便在其它主机上执行hadoop命令。
6.9 格式化NameNode
以cdh0作为NameNode,执行hadoop命令:

hadoop namenode -fromat

如果不报错没有任何异常,继续往下。
6.10 启动集群
在hadoop主目录中执行start-all.sh批处理启动集群;

sbin/start-all.sh

这里写图片描述

七、效果预览

在cdh0上使用jps查看java进程;
这里写图片描述

在cdh1/2上使用jps查看java进程;
这里写图片描述

接着使用浏览器访问http://cdh0:50070,即可看到Hadoop集群的信息总览;
这里写图片描述

八、错误总计

在启动Hadoop集群后,可以使用jps命令查看每台机器上该启动的进程是否启动,如果没有启动,则要看hadoop目录中的logs目录的日志,如下图是由于没有创建hadoop用到的namenode存储目录,导致namenode启动失败。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MEMORYLORRY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值