我是靠谱客的博主 细腻鸭子,最近开发中收集的这篇文章主要介绍centos7安装hadoop3详细过程及步骤(新手向),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文主要思路参考了https://blog.csdn.net/u013457387/article/details/87856770的方法,但个人在配置过程中遇到过很多的问题,最终配置成功并在此总结。
本伪分布式是在vmware上建立的,centos版本为7.7,java版本是自带的openjdk1.8.0,hadoop版本为3.2.1
安装流程:

建立主机
配置主机host名和ip
建立分机
配置分机host名和ip
设置免密登录
下载解压hadoop
配置文件
初始化
启动hadoop
主机启动resourcemanager
分机启动nodemanager

节点结构:

namenode:master
datanode:slave1
datanode:slave2

一、建立主机
VM上安装centos7的主机,设置初始内存为2G,硬盘为50G,安装成功后新建用户hadoop,设置hadoop的密码并授予hadoop用户sudo权限(不过后面主要还是用root操作)

[root@localhost ~]#useradd hadoop
[root@localhost ~]#passwd hadoop
[root@localhost ~]#chmod u + w /etc/sudoers
[root@localhost ~]#vim /etc/sudoers
#在root ALL=(ALL)ALL下添加hadoop ALL(ALL)ALL
[root@localhost ~]#chmod u - w /etc/sudoers

二、配置主机host名称及ip
配置主机host名称为master

[root@localhost ~]#hostnamectl sethostname master
#重启使得生效
[root@localhost ~]#reboot

配置固定ip
1.先通过ifconfig查看自己的ip和网卡名

[root@master ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.78.131  netmask 255.255.255.0  broadcast 192.168.78.255
        ether 00:0c:29:dc:23:77  txqueuelen 1000  (Ethernet)
        RX packets 31278  bytes 5193637 (4.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28144  bytes 2892499 (2.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我的ip是192.168.78.131,网卡名为ens33
在vm的编辑->虚拟网络编辑器->更改设置->NAT设置上查得网关端口为192.168.78.2
那么修改网卡文件/etc/sysconfig/network-scripts/ifcfg-ens33,内容如下:

DEVICE="ens33"
BOOTPROTO="static"
IPADDR="192.168.78.131"
NETMASK="255.255.255.0"
GATEWAY="192.168.78.2"
ONBOOT="yes"
TYPE="Ethernet"
IPV6INIT="no"
DNS1="192.168.78.2"

2.修改/etc/sysconfig/network

NEWTORKING=YES
NETWORKING_IPV6=NO
HOSTNAME=master

3.修改DNS信息
修改/etc/resolv.conf

nameserver 192.168.78.2

三、建立分机
使用vm把主机克隆两份,默认选项点击下去即可

四、配置分机名称及ip
1.令分机1的ip地址为192.168.78.132,分机1host名为slave1;分机2的ip地址为192.168.78.133,分机2host名为slave2,同样按照master的方式修改3个文件,但ip要对应回自己的分机
2.修改master上的/etc/hosts
追加内容

192.168.78.131 master
192.168.78.132 slave1
192.168.78.133 slave2

3.将hosts文件复制到slave1和slave2

[root@localhost ~]#scp /etc/hosts root@slave1:/etc
[root@localhost ~]#scp /etc/hosts root@slave2:/etc

五、设置免密登录
1.在master上生成公钥

[root@localhost ~]#ssh-keygen -t rsa

将在/root/.ssh目录下生成公钥id_rsa.pub和私钥id_rsa

2.在slave1上生成密钥,产生的公钥写入authorized_keys上

[root@slave1 ~]#ssh-keygen -t rsa
[root@slave1 ~]#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@slave1 ~]#chmod 0600 ~/.ssh/authorized_keys

传输公钥到主机

[root@slave1 ~]#ssh-copy-id -i master

对slave2进行同样操作
3.然后在master上授权

[root@master .ssh]# chmod 0600 authorized_keys
[root@master .ssh]# scp authorized_keys slave1:/root/.ssh/
[root@master .ssh]# scp authorized_keys slave2:/root/.ssh/

4.测试master和slave1、master和slave2之间是否能ssh互通

六、下载解压hadoop
在master上切换到/usr/local目录,下载并解压hadoop 3.2.1.tar.gz(是已经编译好的)

[root@master local]#wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
[root@master local]#tar -xzvf hadoop-3.2.1.tar.gz

七、配置文件(对master、slave1和slave2)
提醒:配置master的话不妨先把虚拟机内存调到4G
1.配置jps
jps类似于ps命令,但是用于仅查看java进程。由于centos自带的java是openjdk版本,没有jps命令,故需要安装另一个包

[root@master local]#yum install java-1.8.0-openjdk-devel.x86_64

2.配置java环境变量
安装jsp完毕后寻找java的安装路径

[root@master local]# which java
/usr/bin/java
[root@master local]# ls -lrt /usr/bin/java
lrwxrwxrwx. 1 root root 22 Aug  5 16:38 /usr/bin/java -> /etc/alternatives/java
[root@master local]# ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Aug  5 16:38 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre/bin/java

所以这个java路径为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre(注意这里千万不要把/bin或者/bin/java带上,只到jre就可以了)
然后配置java路径

[root@master local]#vim /etc/profile

之后在最下面填写并保存

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

使其生效

[root@master local]#source /etc/profile

3.配置hadoop-env.sh
去到刚才解压的文件夹里,进入到/etc/hadoop下,编辑hadoop-env.sh文件最下面,写入并保存:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre

4.编辑core-site.xml文件
注意:三台机器上的core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml的配置内容要完全一致,地址全部都是master,不因分机而改变host名
<configuration>节点内加入配置

<property>

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

        <value>/root/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

   </property>

   <property>

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

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

   </property>

5.配置hdfs-site.xml
<configuration>内加入配置

<property>

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

   <value>/root/hadoop/dfs/name</value>

   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>

</property>

<property>

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

   <value>/root/hadoop/dfs/data</value>

   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>

</property>

<property>

   <name>dfs.replication</name>

   <value>2</value>

</property>

<property>

      <name>dfs.permissions</name>

      <value>true</value>

      <description>need not permissions</description>

</property>

6.配置mapred-site.xml
<configuration>节点内加入配置

 <property>

   <name>mapred.job.tracker</name>

   <value>master:49001</value>

</property>

<property>

      <name>mapred.local.dir</name>

       <value>/root/hadoop/var</value>

</property>


<property>

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

       <value>yarn</value>

</property>

7.配置yarn-site.xml
<configuration>节点内加入配置

<property>

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

        <value>master</value>

   </property>

   <property>

        <description>The address of the applications manager interface in the RM.</description>

        <name>yarn.resourcemanager.address</name>

        <value>${yarn.resourcemanager.hostname}:8032</value>

   </property>

   <property>

        <description>The address of the scheduler interface.</description>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>${yarn.resourcemanager.hostname}:8030</value>

   </property>

   <property>

        <description>The http address of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>${yarn.resourcemanager.hostname}:8088</value>

   </property>

   <property>

        <description>The https adddress of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.https.address</name>

        <value>${yarn.resourcemanager.hostname}:8090</value>

   </property>

   <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>${yarn.resourcemanager.hostname}:8031</value>

   </property>

   <property>

        <description>The address of the RM admin interface.</description>

        <name>yarn.resourcemanager.admin.address</name>

        <value>${yarn.resourcemanager.hostname}:8033</value>

   </property>

   <property>

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

        <value>mapreduce_shuffle</value>

   </property>

   <property>

        <name>yarn.scheduler.maximum-allocation-mb</name>

        <value>2048</value>

        <discription>每个节点可用内存,单位MB,默认8182MB</discription>

   </property>

   <property>

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>2.1</value>

   </property>

   <property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>2048</value>

</property>

   <property>

        <name>yarn.nodemanager.vmem-check-enabled</name>

        <value>false</value>

</property>

8.修改workers
在master节点的workers文件内把localhost删除,加入

slave1
slave2

保存
在slave1节点的workers文件内把localhost删除,加入

master
slave2

保存
在slave2节点的workers文件内把localhost删除,加入

master
slave1

保存
9.在/root下新增如下目录

[root@master ~]#mkdir  /root/hadoop
[root@master ~]#mkdir  /root/hadoop/tmp
[root@master ~]#mkdir  /root/hadoop/var
[root@master ~]#mkdir  /root/hadoop/dfs
[root@master ~]#mkdir  /root/hadoop/dfs/name
[root@master ~]#mkdir  /root/hadoop/dfs/data

八、初始化
也即格式化,在master节点进入到/usr/local/hadoop-3.2.1/bin目录然后执行

[root@master bin]# ./hadoop namenode -format

九、启动hadoop
切换到目录/usr/local/hadoop-3.2.1/sbin
在start-dfs.sh 、stop-dfs.sh两个文件开头位置添加如下配置

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

在start-yarn.sh 、stop-yarn.sh两个文件开头位置添加如下配置

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=root
YARN_NODEMANAGER_USER=root

在/usr/local/hadoop-3.2.1/sbin下,执行

[root@master sbin]#./start-all.sh

使用浏览器访问192.168.78.131:9870,可以进入到overview界面
在这里插入图片描述使用在master节点使用jps可以看到自己的namenode,secondarynamenode进程,在slave1和slave2节点用jps可以看到自己的datanode进程

十、在master节点上启动resourcemanager
在/usr/local/hadoop-3.2.1/sbin下,执行

[root@master sbin]#./yarn-daemon.sh start resourcemanager

再使用jps可以看到resourcemanager进程
此时可以通过192.168.78.131:8088端口访问cluster界面了
在这里插入图片描述

十一、在slave节点上启动nodemanager
在/usr/local/hadoop/3.2.1/sbin下,执行

[root@slave1 sbin]#./yarn-daemon.sh start nodemanager

使用jps可以看到自己的nodemanager进程已启动

若要关闭的话,需先在master节点执行

[root@master sbin]#./stop-all.sh
[root@master sbin]#./yarn-daemon.sh stop resourcemanager

关闭节点和resourcemanager
然后在slave节点执行

[root@slave1 sbin]#./yarn-daemon.sh stop nodemanager

关闭nodemanager

(存在一点疑问就是,为什么start-all.sh是不包括resourcemanager的呢?)

至此已成功搭建伪分布式。
几点总结:
1.遇到bug一定要多看日志(logs下面的log文件),报错了可以搜一搜
2.之前8088无法启动,可能的解决方法如下:
(1)修改yarn-env.sh
(2)修改yarn-site.xml的hostname(一般来说意义不大)
(3)修改yarn-site.xml的内存(一般用2048M)或者cpu(一般为1核)
(4)查看端口8088是否被占用,有lsof -i:port及netstat -nltp|grep port查看
(5)防火墙(一般与此无关系)
(6)重新格式化,先删除logs下所有文件后,再删除/root/hadoop自身及所属目录,然后重新建回/root/hadoop等6个目录后再./hadoop namenode -format

关于nodemanager及resourcemanager各自的功能意义,可以参考以下blog:
https://www.cnblogs.com/tyxuanCX/p/9979749.html
https://blog.csdn.net/qq_33734225/article/details/79655156

最后

以上就是细腻鸭子为你收集整理的centos7安装hadoop3详细过程及步骤(新手向)的全部内容,希望文章能够帮你解决centos7安装hadoop3详细过程及步骤(新手向)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部