Centos7下hadoop2.7.7的全分布式模式安装

 

环境介绍:Centos7 + jdk1.8.0_211
一、首先、
安装JDK1.8.0,详情请移步
Centos7下安装配置JDK

关闭防火墙(建议关闭、当然也可以自己开放端口)
Centos7下防火墙的操作

创建一个用户hadoop,当然也可以使用root用户操作。(我的是使用root操作)
可以创建一个linux用户叫hadoop作为Hadoop的工作者,因为root下是很危险的。

sudo useradd -m hadoop -s /bin/bash    #创建hadoop用户
sudo passwd hadoop #设置密码
sudo adduser hadoop sudo  #增加管理员权限

/etc/hosts文件配置:
在每台机器下的etc/hosts文件中写入以下内容(才能让其识别IP与主机名的对应关系):
其中H1、H2、H3分别为主机名,H2为主节点的主机名。主机名可在/ect/hostname下用cat查看:

192.168.77.98 H1
192.168.77.9 H2
192.168.77.27 H3

 

二、ssh配置:

ssh-keygen -t rsa   生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)、三个回车
cd .ssh/  #进入相关目录查看相关文件

 

在主节点中将公钥复制到需要免密登录的机器(服务器上),通过如下命令:
(最好给本机(主节点)也copy一个,ssh-copy-id 本机ip或者主机名)(输入命令回车后需要输入目标ip的用户密码才能成功)

ssh-copy-id 目标ip地址
或者 ssh-copy-id -i ~/.ssh/id_rsa.pub 目标IP地址或主机名

 

注1:copy-id的时候另一台机器的用户必须在线(因为一台Linux机器可以存在多个用户,需要把公钥复制到对应的服务器中对应的用户目录下,则该用户必须在对应服务器中在线),即机器必须是开启的。
子节点若是想连接主节点,则子节点中配置:

ssh-keygen -t rsa
scp ./id_rsa.pub root@主节点IP:/root/.ssh/authorized_keys

 

使用如下命令来连接节点:
就是远程登录

ssh 目标IP或者主机名

 

注2:
1.配置ssh时候,作为namenode  resourcemanager 的服务器需要配置ssh(即namenode resourcemanager 在同一台服务器上),即把该服务器的用户的公钥存储到其他所有节点 ssh-copy-id
2.如果 namenode 和 resourcemanager 不在同一台服务器上,那么两台机器都需要配置ssh,即两台服务器都需要把各自用户的公钥储存到其他所有节点,因为启动HDFS使用  bin/hdfs namenode -format  和  sbin/start-dfs.sh (可以不加bin和sbin,因为配置了环境变量的)和    启动 resourcemanager 使用   sbin/start-yarn.sh  需要访问其他节点

三、解压配置Hadoop环境变量:

tar -xzvf hadoop-2.7.7.tar.gz
ln -s hadoop-2.7.7 hadoop  #创建软连接
vim ~/.bashrc #编辑文件设置环境变量
在环境变量中加入如下:
export HADOOP_HOME=/root/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

然后重载配置生效:
source ~/.bashrc

 

验证Hadoop环境变量是否正常:

whereis hdfs

 

四、配置hadoop的配置文件:
总共有5个文件需要修改:hadoop-env.sh、core-site.xml、hdfs-site.xml、
mapred-site.xml、yarn-site.xml。这些文件的路径均是在${HADOOP_HOME}/etc/hadoop。
当然,还要在/etc/hosts中添加: 本机ip 本机主机名 的映射关系。

1.修改hadoop-env.sh文件:
hadoop-env.sh与单机模式的配置一样.

cd /hadoop-2.7.7/etc/hadoop

 

查看jdk位置:echo $JAVA_HOME
修改hadoop-env.sh文件:vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}一行中的${JAVA_HOME}改为jdk地址。
2.配置core-site.xml:

在core-site.xml中指定hadoop.tmp.dir的value为:/root/hadoop/tmp,防止写到默认地址之后往后丢失数据。

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
        <!--value填的是默认文件系统的URL地址,格式是“hdfs://host:port”,host为ip或者主机名,port默认为8020-->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop-2.7.7/tmp</value>
        <!--sda-->
    </property>
</configuration>
如果需要用到spark的话,需要在core-site.xml中加入如下:【否则会出错】

<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
</property>
<property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
</property>

 

3.配置hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <!--默认为3,搭建3台机器全分布式时改为2即可-->
    </property>
</configuration>

 

4.配置mapred-site.xml:
首先 cp mapred-site.xml.template mapred-site.xml 生成 mapred-site.xml, 然后修改 mapred-site.xml 内容:
在mapred-site.xml中指定mapreduce.framework.name的value为yarn代表集群模式。

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <!--value默认为local,设置为yarn使其运行在YARN框架上-->
    </property>
</configuration>

 

5.配置yarn-site.xml:
yarn-site.xml中的yarn.resourcemanager.hostname的value都设置为主节点的IP或者主机名。

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>主机名</value>
        <!--设置资源管理器的主机,设置为主机名或者IP-->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <!--设置节点管理器的辅助服务器,默认为空,设置为mapreduce_shuffle-->
    </property>
</configuration>

 

6.在slavers文件中添加从节点的主机名,一行一个,不能存在空格。
该文件与上述文件在同一目录下。

五、主节点分发配置

上面的第四步都是在主节点中配置的,然后只需要把主节点的配置文件发送给从节点即可。

cd ~/hadoop/etc
scp -r hadoop root@H1:/root/hadoop/etc
scp -r hadoop root@H3:/root/hadoop/etc

 

六、启动集群
首先保证每个机器都开启。
之后在主节点上初始整个文件系统命令:

hadoop namenode -format

 

启动命令只需要在H1机器上执行即可同时启动所有节点的机器。
启动HDFS:start-dfs.sh
启动YARN: start-yarn.sh
当然、也可以直接启动所有进程 start-all.sh
分别在主节点、从节点中使用 jps查看已经跑起来的进程。

注:如果没有配置环境变量、则需要到sbin目录下执行sh文件进行开启和关闭.
web访问HDFS进程界面:访问http://IP:50070可查看主节点数据节点的信息;
访问http://IP:50090即可查看第二名称节点的信息。
web访问YARN进程界面:访问  http://IP:8088

 

posted @ 2019-09-07 16:01  Tony学长  阅读(58)  评论(0编辑  收藏  举报