当前位置:   article > 正文

Hadoop 2.7.4 完全分布式安装与部署_hadoop-2.7.4.tar.gz

hadoop-2.7.4.tar.gz

Hadoop 2.7.4 完全分布式安装与部署

Hadoop官方指导传送门 传送门

服务器准备

服务器规划,提供 3 台服务器,OS 为centos 7

主机名IP预备分配服务
centos-node1192.168.99.101DataNode,NodeManager,NameNode
centos-node2192.168.99.102DataNode,NodeManager,SecondaryNameNode
centos-node3192.168.99.103DataNode,NodeManager,ResourceManager,HistoryServer

修改主机名

$ hostnamectl set-hostname centos-node1
  • 1

修改服务器静态IP

可以使用 netstat -r 来查询网关如下图所示:

image-20200911142643578

然后将 dhcp 改为 静态IP

$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s8
  • 1

完全配置如下所示:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s8"
UUID="5b4ea2f4-a5af-4fac-8793-81692730dad9"
DEVICE="enp0s8"
ONBOOT="yes"

# 新增
GATEWAY=192.168.99.0  # 修改网关,虚拟机需要注意修改nat
IPADDR=192.168.99.101 # 分配IP地址
NETMASK=255.255.255.0 # 子网掩码
DNS1=223.5.5.5        # 使用阿里公共DNS1
DNS2=223.6.6.6        # 使用阿里公共DNS2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

修改 hosts

$ vi /etc/hosts
# 添加
192.168.99.101 centos-node1
192.168.99.102 centos-node2
192.168.99.103 centos-node3
  • 1
  • 2
  • 3
  • 4
  • 5

安装 JDK8

$ vi /etc/profile
# 添加
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

增加 dhfs 用户

通常,建议HDFS和YARN以单独的用户身份运行。

在大多数安装中,HDFS进程以 “hdfs” 执行。YARN通常使用 “yarn” 帐户

$ adduser hdfs
$ passwd hdfs # 修改密码
  • 1
  • 2

/etc/sudoers添加如下图所示:

image-20200911170014063

设置 SSH 无密码登录

  1. 3 台服务器全部设置

    $ ssh-keygen -t rsa
    
    • 1
  2. 各自分配 ssh key

    $ ssh-copy-id centos-node1
    $ ssh-copy-id centos-node2
    $ ssh-copy-id centos-node3
    
    • 1
    • 2
    • 3

安装部署 Hadoop

切换至 hdfs 用户

$ su - hdfs
  • 1

下载

$ curl -O https://archive.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
  • 1

解压

$ tar -zxf hadoop-2.7.4.tar.gz  -C /opt/hadoop-2.7.4
$ ln -s /opt/hadoop-2.7.4 /usr/local/hadoop
$ chown -R hdfs /opt/hadoop-2.7.4
  • 1
  • 2
  • 3

修改环境变量

$ sudo vi /etc/profile
# 修改为
JAVA_HOME=/usr/local/java/
JRE_HOME=$JAVA_HOME/jre
HADOOP_HOME=/usr/local/hadoop
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin

export JAVA_HOME JRE_HOME PATH CLASSPATH HADOOP_HOME
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

修改 Hadoop 配置

这里我们进入$HADOOP_HOME文件夹开始操作

$ mkdir -p $HADOOP_HOME/hdfs/data
$ mkdir -p $HADOOP_HOME/tmp
  • 1
  • 2

配置hadoop-env.sh

$ sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
  • 1

增加 或 修改

export JAVA_HOME=/usr/local/java/
  • 1

配置core-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml
  • 1

configuration配置如下

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://centos-node1:4000</value>
        <description>HDFS的URI,文件系统://namenode标识:端口号</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
        <description>namenode上本地的hadoop临时文件夹</description>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

配置说明:

fs.defaultFSNameNode的地址。

hadoop.tmp.dirhadoop临时目录的地址。默认情况下,NameNodeDataNode的数据文件都会存在这个目录下的对应子目录下。

配置hdfs-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
  • 1

内容如下:

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>centos-node2:50090</value>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>centos-node2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

配置说明:

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将centos-node2规划为SecondaryNameNode服务器。

dfs.http.address配置的是本机默认的dfs地址,有些服务器可以不用配置,我的试过了,必须加上,不然后续网页打不开。

dfs.namenode.name.dir 指定name文件夹。

dfs.datanode.data.dir 指定data文件夹。

dfs.datanode.data.dir 指定副本数,一般小于服务器数,我们设置为3

配置 slaves

hadoop2.x中叫做slaves,在3.x版本中改名workers。 用来指定HDFS上有哪些DataNode节点,以及各个节点使用ip地址或者主机名,用换行分隔。

$ sudo vi $HADOOP_HOME/etc/hadoop/slaves
  • 1

这里我们就使用主机名

centos-node1
centos-node2
centos-node3
  • 1
  • 2
  • 3

配置yarn-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
  • 1

配置如下

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>centos-node3</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
  	</property>
        <name>yarn.application.classpath</name>
    		<value>
            /opt/hadoop-2.7.4/etc/hadoop,
            /opt/hadoop-2.7.4/share/hadoop/common/*,
            /opt/hadoop-2.7.4/share/hadoop/common/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/hdfs/*,
            /opt/hadoop-2.7.4/share/hadoop/hdfs/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/mapreduce/*,
            /opt/hadoop-2.7.4/share/hadoop/mapreduce/lib/*,
            /opt/hadoop-2.7.4/share/hadoop/yarn/*,
            /opt/hadoop-2.7.4/share/hadoop/yarn/lib/*
   		</value>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

配置说明:

按照规划使用centos-node3做为 resourcemanager 使用yarn.log-aggregation-enable开启日志聚合,yarn.log-aggregation.retain-seconds配置聚集的日志在HDFS上最多保存多长时间。

配置mapred-site.xml

$ sudo vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
  • 1

配置如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>centos-node3:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>centos-node3:19888</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

配置说明:

mapreduce.framework.name设置mapreduce任务运行在yarn上。

mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在centos-node3上。

mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。

yarn.app.mapreduce.am.env,mapreduce.map.env,mapreduce.reduce.env需要设置为HADOOP_MAPRED_HOME=${HADOOP_HOME},否则在运行yarn程序的时候会出现jar包未找到的错误。

启动 Hadoop 集群

完成上述所有必要的配置后,将文件分发到所有服务器的HADOOP_CONF_DIR目录下/usr/local/hadoop/etc/hadoop。在所有计算机上,该目录应该是相同的目录。

注意:启动和停止单个hdfs相关的进程使用的是"hadoop-daemon.sh"脚本,而启动和停止yarn使用的是"yarn-daemon.sh"脚本。

格式化

要启动Hadoop集群,需要同时启动HDFSYARN集群。 首次启动HDFS时,必须对其进行格式化。将新的分布式文件系统格式化为hdfs.

$ $HADOOP_HOME/bin/hdfs namenode -format <群集名称>
  • 1

集群名称可以不填写,不出意外,执行完成后$HADOOP_HOME/hdfs中就有东西了。

启动 HDFS

如果配置了slavesssh互信我们可以

$ $HADOOP_HOME/sbin/start-dfs.sh
  • 1

启动 YARN

如果配置了workers和ssh互信我们可以

$ $HADOOP_HOME/sbin/start-yarn.sh
  • 1

启动 ResourceManager

规划在centos-node3上,因此我们在centos-node3上执行

$ $HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager
  • 1

启动 HistoryServer

规划在centos-node3上,因此我们在centos-node3上执行

$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
  • 1

查看HDFS Web页面

位于centos-node150070端口:http://centos-node1:50070/

image-20200913152341967

查看YARN Web 页面

位于centos-node38088端口:http://centos-node3:8088/

image-20200913152504612

查看历史WEB页面

位于centos-node319888端口:http://centos-node3:19888/

image-20200913152549303

测试

为了测试我们使用 wordcount 来测试

  1. 新建文件

    $ sudo vi /opt/word.txt
    
    • 1
  2. 文本内容

    hadoop mapreduce hive
    hbase spark storm
    sqoop hadoop hive
    spark hadoop
    
    • 1
    • 2
    • 3
    • 4
  3. 新建hadoop里文件夹demo

    $ hadoop fs -mkdir /demo
    
    • 1
  4. 文件写入

    $ hdfs dfs -put /opt/word.txt /demo/word.txt
    
    • 1
  5. 执行输入到hadoop的/output

    $ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /demo/word.txt /output
    
    • 1
  6. 查看文件列表

    $ hdfs dfs -ls /output
    
    • 1
    Found 2 items
    -rw-r--r--   3 root supergroup          0 2020-09-13 16:01 /output/_SUCCESS
    -rw-r--r--   3 root supergroup         60 2020-09-13 16:01 /output/part-r-00000
    
    • 1
    • 2
    • 3
  7. 查看文件中内容

    $ hdfs dfs -cat /output/part-r-00000
    
    • 1
    hadoop  3
    hbase   1
    hive    2
    mapreduce       1
    spark   2
    sqoop   1
    storm   1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

参考资源

https://juejin.im/post/6844904041013575688#heading-21

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/651189
推荐阅读
相关标签
  

闽ICP备14008679号