搭建hadoop全分布式集群

版权声明:小白一个,欢迎各位大佬指点。 https://blog.csdn.net/hzj1998/article/details/87967359

环境:

hadoop 3.0.3

VMware+Ubuntu 16.04两台(或多台)

JDK 1.8

一、装好Linux虚拟机,大概步骤如下:

命名随便,为了方便区分,主节点取名master,从节点1取名slave1,从节点2取名slave2。。。。

为了以后ip地址不变,网络适配器选择桥接模式。

二、装好后,查询各节点ip(命令:ifconfig):

我这里各ip为:

192.168.43.82  master

192.168.43.148  slave

三、对主节点(master)操作:

1.更改/etc/hostname 机器的名字,改为master

 sudo vi /etc/hostname

2.更改机器名字和ip的对应关系

 sudo vi /etc/hosts

 更改内容如下(如果有多台从节点需要全部写入这里):

 127.0.0.1       localhost

 #127.0.1.1      master

192.168.43.82  master

192.168.43.148  slave

3.重启虚拟机,可以看到命令行已经由master@ubuntu变成master@master了。

4.拷贝三个文件,可从windows桌面直接拖过去,也可从一台Linux虚拟机复制到本机(install.sh里面包含了jdk的解压与安装,hadoop的解压与安装,环境变量的配置,hdfs,yarn用户的创建等等,可记事本打开查看,为了方便,把这些写成一个脚本)。

下载地址:链接:https://pan.baidu.com/s/1UD49-Ckkn5FnUe850CMkjA  提取码:qjy5 

 

5.下好之后,进到这几个文件的位置,我放在桌面,即cd /home/master/Desktop,然后执行

sudo chmod -R 777 install.sh 
sudo chmod -R 777 hadoop-3.0.3.tar
sudo chmod -R 777 jdk-8u91-linux-x64.tar.gz

sudo ./install.sh

6.在hadoop的安装目录构建logs文件并修改权限(用户属于mapred用户,组属于hadoop组 权限是775,注意:hdfs或者yarn用户向logs写东西是不需要权限的或不要求是属于本用户的,但是mapred向下面写的时候要求必须是本用户的时候才能向里面写东西。)

cd /opt/hadoop

sudo mkdir logs

sudo chown -R mapred logs
sudo chgrp -R hadoop logs
sudo chmod 775 -R logs

 

7.进入etc/hadoop文件

cd /opt/hadoop/etc/hadoop

8.修改hadoop-env.sh文件(设置jdk的加载路径,hadoop的启动脚本要求知道jdk的安装在什么位置,原因hadoop本身是由java开发的)

sudo vi hadoop-env.sh

差不多在这个位置(修改为 export JAVA_HOME=/opt/jdk,修改完wq保存退出,记得把#删了。):

9.修改core-site.xml配置文件

sudo vi core-site.xml

修改内容如下(此处ip地址为主节点ip,注意修改):

<!--指明在集群中谁承担主节点的角色-->
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://192.168.43.82:9000</value>
        </property>
</configuration>

10.修改hdfs-site.xml文件

sudo vi hdfs-site.xml

修改内容如下(原封不动直接复制):

        <!--指明集群的名字-->
    	<property>
                <name>dfs.nameservices</name>
                <value>hadoop-master</value>
        </property>
		<!--hdfs上传的文件备份几份,默认备份是3,注意:值不能大于从节点的个数-->
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
	    <!--主节点的数据存放到主节点的什么位置上去,主节点要求存放的数据是从节点上的相关数据-->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/data/hadoop/hdfs/nn</value>
        </property>
        
        <!--剩下的信息是从节点的相关信息-->
        <property>
                <name>fs.checkpoint.dir</name>
                <value>file:/data/hadoop/hdfs/snn</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/data/hadoop/hdfs/dn</value>
        </property>

11.修改mapred-site.xml文件(指明管理mapred框架的名字)

sudo vi mapred-site.xml

修改内容如下(原封不动直接复制):

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
	<property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
</configuration>

12.修改yarn-site.xml文件

sudo vi	yarn-site.xml

修改内容如下(注意修改为自己的主节点ip): 

	    <!--yarn集群谁承担着主节点的ip地址-->
	    <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>192.168.43.82</value>
        </property>
	    <!--yarn集群管理mapreduce程序的时候数据的交换方式
固定写法,只有一种-->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
	    <!--yarn集群运行用户程序的时候,运行程序暂时存放的目录 -->
        <property>
                <name>yarn.nodemanager.local-dirs</name>
                <value>/data/hadoop/yarn/nm</value>
        </property>
        <property>
                <name>yran.nodemanager.log-dirs</name>
                <value>/data/hadoop/yarn/logs</value>
        </property>

13.修改workers文件(设置集群中从节点的ip,把原来内容删掉,加上从节点的ip)

sudo vi workers 

14.建立data目录

sudo mkdir /data

15.在data目录下建立hadoop文件

cd /data

sudo mkdir hadoop

16.在hadoop中建立hdfs和yarn文件夹

cd hadoop

sudo mkdir hdfs yarn

17.在hdfs文件下建立的dn,nn,snn文件夹

cd hdfs

sudo mkdir dn nn snn

18.在yarn下建立logs,nm文件夹

cd ../yarn

sudo mkdir logs nm

19.给hdfs和yarn设置权限(注意命令在哪级目录输入,进入hadoop目录)

cd /data/hadoop

(1)hdfs的所属用户hdfs,所属组hadoop及其子文件也设置

 sudo chown -R hdfs hdfs

 sudo chgrp -R hadoop hdfs

   (2)  yarn的所属组hadoop及其子文件

 sudo chown -R yarn yarn

 sudo chgrp -R hadoop yarn

20.进入data目录,给hadoop目录及所有子目录或文件赋予权限777

cd /data

sudo chmod 777 -R hadoop

21.格式化节点,先进入hdfs用户,再格式化,只格式化一次

su - hdfs(密码hadoop)

hdfs namenode –format

四、对从节点(slave)操作:

1.更改/etc/hostname 机器的名字,改为slave

2.重复 三.2到三.21

五、启动与停止集群:

1.在主节点上切换hdfs用户

启动:hadoop-daemon.sh start namenode
停止:hadoop-daemon.sh stop namenode

2.在主节点上切换yarn用户

启动:yarn-daemon.sh start resourcemanager
停止:yarn-daemon.sh stop resourcemanager

3.在从节点上切换hdfs用户

启动:hadoop-daemon.sh start datanode
停止:hadoop-daemon.sh stop datanode

2.在从节点上切换yarn用户

启动:yarn-daemon.sh start nodemanager
停止:hadoop-daemon.sh stop datanode

六、浏览器输入http://192.168.43.82:9870http://192.168.43.82:8088进行测试。

七、设置一键启动

在主节点上切换hdfs用户执行如下命令生成明文和密文:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

将铭文拷贝到从节点的需要无密码登陆的机器上去:

ssh-copy-id -i 192.168.43.148

同时拷贝一份到本机:

ssh-copy-id -i localhost

切换yarn用户执行:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

将铭文拷贝到从节点的需要无密码登陆的机器上去:

ssh-copy-id -i 192.168.43.148

验证是否可以无密码登陆

ssh 192.168.43.82
ssh 192.168.43.148

在yarn用户下:

启动yarn集群:start-yarn.sh
关闭yarn集群:stop-yarn.sh

在hdfs用户下:

启动hdfs集群:start-dfs.sh
关闭hdfs集群:stop-dfs.sh

注意:集群的启动是在主节点

猜你喜欢

转载自blog.csdn.net/hzj1998/article/details/87967359