Hadoop-2.7.3完全分布式集群搭建(Centos7系统)

实验环境Centos7

使用Hadoop2.7.3和jdk1.8搭建4个结点的完全分布式,一个namenode,3个datanode

192.168.159.101 master

192.168.159.102 node1

192.168.159.103 node2

192.168.159.104 node3

1.首先做好准备工作

下载好对应的hadoop和jdk版本

2.创建虚拟机和用户

创建一个虚拟机master和hadoop用户,hadoop组。创建这些是为了便于管理且安全,如果是为了学习方便使用的话可以直接使用root用户。

如果没有则创建使用以下命令创建

groupadd hadoop

useradd hadoop -d /home/hadoop -g hadoop

3.永久关闭防火墙

先查看防火墙状态systemctl status firewalld.service

如果还在运行则关闭防火墙systemctl stop firewalld.service

禁用防火墙systemctl disable firewalld.service

4.将hadoop和jdk传至虚拟机中

如果安装过Vmware Tools则可以直接从本机将文件拖如虚拟机中。如果没有,可以使用传输工具进行传输,例如xshell或其他工具,记下文件的位置。

传输完成后创建目录,将hadoop和jdk分别放在hadoop和Java目录中(如果创建了用户则需要注意创建的文件和目录的权限问题,即使用集群的用户一定要有权限)

mkdir /home/hadoop/hadoop2.7

mkdir /home/java/jdk1.8

mv /… /home/hadoop/hadoop2.7

mv /… /home/java/jdk1.8

将hadoop和jdk分别解压

tar -zxvf /home/hadoop/hadoop2.7/hadoop.2.7.tar.gz(路径可以自己修改,对应即可)

tar -zxvf /home/java/jdk1.8/jdk1.8.tar.gz

5.配置环境变量

vi /etc/profile 编辑环境变量配置文件,添加或修改环境变量(有些系统可能有jdk工具,不要使用系统安装的openjdk,使用自己的jdk)。

添加jdk和hadoop的环境变量(路径设置为自己存放的目录)

export JAVA_HOME=/home/java/jdk1.8

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/home/hadoop/hadoop2.7

export HADOOP_LOG_DIR=/home/hadoop/hadoop2.7/logs

export YARN_LOG_DIR=$HADOOP_LOG_DIR

export PATH=.:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

6.验证环境变量

输入 source /etc/profile 更新环境变量

输入 java -version 和 javac -version,看有无版本信息输出

输入hadoop,同样看是否出现提示信息

如果有提示信息输出,则说明配置正确,如果没有仔细检查环境变量

7.创建目录

mkdir /home/hadoop/hadoop2.7/tmp 用来存放临时文件

mkdir /home/hadoop/hadoop2.7/logs 用来存放日志文件

mkdir /home/hadoop/hadoop2.7/hdfs 用来存储集群数据

mkdir /home/hadoop/hadoop2.7/hdfs/name 用来存储文件系统元数据

mkdir /home/hadoop/hadoop2.7/hdfs/data 用来存储真正的数据

8.进入hadoop解压后的目录下,找到两个.sh文件,修改JAVA_HOME的值

cd etc/hadoop

vi hadoop-env.sh

修改JAVA_HOME的值,指向存放Jdk的路径

export JAVA_HOME=/home/java/jdk1.8/

vi yarn-env.sh

修改JAVA_HOME的路径

export JAVA_HOME=/home/java/jdk1.8/

9.修改核心配置文件

vi core-site.xml

在配置标签中添加

<property>

    <name> fs.default.name </name>

    <value>hdfs://master:9000</value>

    <description>指定HDFS的默认名称</description>

</property>

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://master:9000</value>

    <description>HDFS的URI</description>

</property>

<property>

    <name>hadoop.tmp.dir</name>

    <value>/home/hadoop/hadoop2.7/tmp</value>

    <description>节点上本地的hadoop临时文件夹</description>

</property>

vi hdfs-site.xml

在配置标签中添加

<property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/home/hadoop/hadoop2.7/hdfs/name</value>

<description>namenode上存储hdfs名字空间元数据 </description>

</property>

<property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/home/hadoop/hadoop2.7/hdfs/data</value>

<description>datanode上数据块的物理存储位置</description>

</property>

<property>

        <name>dfs.replication</name>

        <value>1</value>

<description>副本个数,默认是3,应小于datanode机器数量</description>

</property>

输入 cp mapred-site.xml.template mapred-site.xml 将mapred-site.xml.template文件复制到当前目录,并重命名为mapred-site.xml

vi mapred-site.xml

在配置标签中添加

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    <description>指定mapreduce使用yarn框架</description>

</property>

vi yarn-site.xml

在配置标签中添加

<property>

        <name>yarn.resourcemanager.hostname</name>

        <value>master</value>

<description>指定resourcemanager所在的hostname</description>

</property>

<property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

        <description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行 MapReduce程序</description>

</property>

vi slaves

删除localhost,改为datanode的主机名

node1

node2

node3

10.克隆虚拟机

使用Vmware的克隆功能,完整克隆master

11.修改主机名

vi /etc/hostname

配置每一台主机,把localhost删除,修改为节点对应的名称,master,node1,node2,node3,如master修改为master

12.配置网络

vi /etc/sysconfig/network-script/ifcfg-ens33 这里不同的系统可能网络接口名不同

将每一台主机配置为对应的ip地址,如master修改为192.168.159.101

重启网络服务 service network restart ,查看修改是否成功

13.修改每一台主机的/etc/hosts文件

vi /etc/hosts

添加

192.168.159.101 master

192.168.159.102 node1

192.168.159.103 node2

192.168.159.104 node3

注意要与实际Ip和主机名对应

14.配置ssh免密登录

原理:通过创建无密码公钥的方式,将公钥传给对方。使用ssh协议连接时,会寻找authorized_keys文件中存放的公钥,如果有目标主机的公钥则将公钥传给目标主机,目标主机用自己的私钥和公钥进行匹配,正确匹配之后则认为两者可信,即不需要密码就可以登录

实现节点之间免密服务原理:

通过把所有节点的公钥写入authorized_keys文件中,再把这个文件传输给每一台节点,此时所有节点都有了其他节点的公钥,则登录时就不需要输入密码

在每台主机上输入 ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa 创建一个无密码的公钥,-t是类型的意思,dsa是生成的密钥类型,-P是密码,’’表示无密码,-f后是秘钥生成后保存的位置

创建完成后,会出现两个文件

id_dsa 存放私钥

id_dsa.pub 存放公钥

输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将公钥id_dsa.pub添加进authorized_keys

执行后会创建authorized_keys文件,这个文件用来放其他节点的公钥。

在非master节点上输入 ssh-copy-id -i ~/.ssh/id_dsa.pub master 将自己的公钥传输给master节点。

这时,master节点拥有所有节点的公钥。

在master中输入

scp -r /用户家目录/.ssh/authorized_keys 用户@主机名:/对应用户的家目录/.ssh/

scp -r /home/hadoop/.ssh/authorized_keys root@node1:/home/hadoop/.ssh/

scp -r /home/hadoop/.ssh/authorized_keys root@node2:/home/hadoop/.ssh/

scp -r /home/hadoop/.ssh/authorized_keys root@node3:/home/hadoop/.ssh/

在每一台主机上输入 chmod 600 authorized_keys 修改文件权限

重启服务 service sshd restart

此时每个节点都保存了所有的公钥,节点之间也就可以ssh免密登录了(第一次仍然需要密码)

15.格式化hdfs

在master机器上输入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果修改了一些配置文件,则需要重新格式化。(由于配置了环境变量任意位置执行都可以)

hdfs namenode -format

16.启动hadoop

如果没有配置环境变量则进入hadoop下的sbin目录

输入 start-all.sh,输入yes即可启动

17.使用jps查看每个节点的进程

master节点有4个进程

NameNode

SecondaryNameNode

ResourceManager

Jps

其他节点(slave)有3个进程

DataNode

NodeManager

Jps

18.用web端查看节点信息

在浏览器打开master:8088或master:50070

打开后显示节点的信息并都正常运行,即搭建成功

19.关闭集群

在sbin目录下输入stop-all.sh即可关闭

如果文章对你有用的话就点个赞鼓励一下吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值