Hadoop部署文档--生产

对于hadoop的安装配置,是从配置环境开始
之前做好工作的铺垫是master,slave1,slave2,slave3上成功安装java8版本,成功安装zookeeper。
本集群的配置是一个master节点,三台slave节点。

1 安装包下载解压

-1 下载hadoop安装包并 解压压缩包

#解压到在/usr/local/share文件夹下

2 配置hadoop环境变量

hadoop采用的是2.7.3版本,在部署Hadoop集群时,需要进行核心文件的配置,主要是配置core-sitr.xml hdfs-site.xml mapped-site.xml yarn-site.xml hadoop-env.sh yarn-env.sh

我们将hadoop集群所需要的环境变量配置到/etc/profile文件中,配置环境变量的命令是

添加hadoop集群环境变量
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin

环境在部署成功后,还要输入命令使环境变量生效,不然是没有价值的,也不能起作用

使刚才的环境变量生效
source /etc/profile

如果需要验证hadoop变量是否配置成功,可以在终端输入如下命令

在终端显示环境变量
echo  $HADOOP  HOME

如果在终端可以显示对应的配置路径信息,则可以认定hadoop环境变量配置成功

3 核心文件的配置

接下来要配置的xml文件在etc/hadoop 里面,
在这里插入图片描述

  • core-site.xml(配置Service的url地址,Hadoop集群临时目录等信息)

在配置hadoop的临时目录,分布式文件系统服务地址,序列文件缓冲区大小等属性值时,可以通过core-site.xml文件进行设置,详细配置内容如图

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop-2.7.3/tmp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
                <property>
                     <name>hadoop.proxyuser.hue.hosts</name>
                     <value>*</value>
                </property>
                <property>
                          <name>hadoop.proxyuser.hue.groups</name>
                          <value>*</value>
                </property>
</configuration>
  • hdfs-site.xml(配置Hadoop集群的HDFS别名、通信地址、端口等信息)

在配置Hadoop集群的分布式系统文件别名、通信地址、端口信息、以及访问集群健康状态、文件存储详情页面地址等属性时,可以通过配置hdfs-site.xml文件来进行设置,详细内容见下面代码

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop-2.7.3/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop-2.7.3/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>master:50070</value>
    </property>
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/opt/hadoop-2.7.3/etc/hadoop/excludes</value>
    </property>
    <property>
        <name>dfs.datanode.address</name>
        <value>0.0.0.0:50022</value>
    </property>
    <property>

        <name>dfs.datanode.max.xcievers</name>

        <value>4096</value>

        <dedication> Datanode 有一个同时处理文件的上限,至少要有4096</dedication>

    </property>
</configuration>
  • mapred-site.xml(计算框架资源管理名称、历史任务访问地址等信息)
    在配置hadoop计算任务托管的框架名称、历史任务访问地址等信息时,可以通过mapred-site.xml文件进行配置,详细配置内容见下面代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
    <property>
                <name>jobtracker.thrift.address</name>
            <value>0.0.0.0:9290</value>
        </property>
        <property>
                <name>mapred.jobtracker.plugins</name>
                <value>org.apache.hadoop.thriftfs.ThriftJobTrackerPlugin</value>
                <description>Comma-separated list of jobtracker plug-ins to be activated.</description>
        </property>
    <property>
        <name>mapred.task.timeout</name>
        <value>1200000</value><!--默认为600S-->可以改的更长!
    </property>


</configuration>                   
  • yarn-site.xml(配置资源管理器的相关内容)
    hadoop的资源管理可以通过YARN来完成资源相关分配、作业的调度与监控及数据的共享等。完成相关配置可以通过yarn-site.xml进行设置,详细配置内容见下面代码
<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
    <property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
   <description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
   <value>4</value>
   <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
<!--<property>
        <name>yarn.rourcemanager.recovery.enabled</name>
        <value>false</value>
</property>-->
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>20</value>
    <discription>每个nodemanager可分配的cpu总核数</discription>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>81290</value>
    <discription>每个nodemanager可分配的内存总量</discription>
</property>

<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>16384</value>
    <discription>单个任务可申请最大内存,默认8192MB</discription>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>4</value>
    <discription>单个任务可申请的最多虚拟CPU个数</discription>
</property>
<property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
    <discription>单个任务可申请的最小虚拟CPU个数</discription>
</property>
    <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>4096</value>
<discription>container最小可申请的内存</discription>
</property>


</configuration>
  • hadoop-env.sh(hadoop集群启动脚本添加JAVA_HOME)

     #设置JAVA_HOME路径
      
      export JAVA_HOME = /opt/jdk1.8.0_171
    
  • yarn-env.sh(资源管理器启动脚本添加JAVA_HOME)

    #设置JAVA_HOME路径
    
    export JAVA_HOME =/opt/jdk1.8.0_171
  • 修改slaves文件(存放DataNode节点的文件)
    文件存在hadoo文件夹下的 /etc/hadoop/slaves
    打开并添加如下内容:
# vi /etc/hadoop/slaves
    #添加以下DataNode节点别名,一个节点别名占用一行,多个节点需换行追加
    
master
slave2
slave3
slave1   

  • 将master节点上的hadoop分发到其他节点上
    在完成上述文件的编辑后,将master节点上的hadoop文件夹分发到其他的节点上,具体实现命令如下:
#使用scp,命令传输到其他节点
#scp用法:scp -r 本地目录 用户@#ip:/目录
scp -r  /opt/hadoop-2.7.3 root @slave1:/opt
scp -r /opt/hadoop-2.7.3 root @slave2:/opt
scp -r  /opt/hadoop-2.7.3 root @slave3:/opt

-最后创建配置文件中需要的目录
具体实现命令如下

mkdir -p /opt/tmp
mkdir -p /opt/tmp/journal
mkdir -p /opt/dfs/name
mkdir -p /opt/dfs/data
mkdir -p /opt/yarn/local
mkdir -p /opt/log/yarn

4 效果验证

在完成hadoop核心文件的配置后,接着就可以去验证所配置的集群,其内容包括集群的启动、集群的可用性测试和集群的高可用性等。
-启动命令

  • (1)启动Zookeper集群服务(dn1,2,3)
    进入到部署的DataNode节点,分别启动Zookeper集群服务,具体实现命令如下:
zkServer.sh start

之后,通过zkServer.sh status来查看集群启动状态

共有三个DataNode节点,所以在启动完毕之后,会呈现一个leader和两个follower。
输入jps命令,终端会先启动zopkeeper服务进程。

  • (2)启动JournalNode进程(nna,nns,dn1,2,3)
    在NameNode节点,启动JournalNode服务进程(因为在格式化NameNode时,会去请求连接该服务进程)
    !!!这个地方不是或的关系,是且的关系,必须五个服务器全部启动才可以,不然后面的工作没办法进行,会报错
    具体操作命令如下:
#在NameNode节点上启动JournalNode进程
hadoop-daemons.sh start journalnode

#在DataNode节点上分别启动JournalNode进程
hadoop-daemon.sh start journalnode

在完成JournalNode服务启动后,可以在终端输入jps命令来查看,如果启动成功,终端会显示对应的服务进程(JournalNode)

  • (3)格式化NameNode节点(master)
    在初次启动集群时,需要格式化NameNode节点,具体的操作命令如下:
#格式化NameNode节点
hdfs namenode -format
#这个初始化也并不是初次启动需要用,有时候会报未初始化的错误,这个时候格式化也能够解决问题
  • (4)注册ZNode(master)
    向zookeeper注册ZNode,具体你操作命令如下:

#注册ZNode
hdfs zkfc -formatZK
  • (5)运行集群启动命令(master)
    完成准备工作后,运行集群启动命令,具体操作指令如下:
#启动分布式文件系统(HDFS)
start-dfs.sh
#启动YARN服务进程
start-yarn.sh

出现问题:YARN_PROXYSERVER_USER,HDFS_ZKFC_USER没有被定义,
**解决方案:**在etc/profie中对未定义变量进行定义=root

加入下面两行代码:

export YARN_PROXYSERVER_USER=root
export HDFS_ZKFC_USER=root

配置之后进行source,
还在 打开找到hadoop/sbin文件夹,

对start-dfs.sh、stop-dfs.sh进行操作

在头部插入

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

对start-yarn.shstop-yarn.sh 进行操作
在这两个文件的头部加入下面的代码

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

正常运行

在当前节点(master)的终端上,输入jps命令查看相关的服务进程,
其中包含DFSZKFailoverontroller,NameNode和ResourceManager服务进程
!!!这个地方应该是三者服务都要有的,缺一不可,如果缺少证明前面操作有问题
!!!学会查看错误日志,发现问题的根源,错误从前往后改

在这里插入图片描述

  • (8)开启 查看任务运行明细和日志进程
    如果要查看任务运行明细和日志,需要开启proxyserver进程和historyserver进程
    具体操作命令如下:
#在NameNode节点开启这两个服务
yarn-daemon.sh start proxyserver
mr-jobhistory-daemon.sh start historyserver

**出现问题:**操作完之后jps检查进程,发现dn1,dn2,dn3上面没有datanode节点
解决方案手动开启: sbin/hadoop-daemon.sh start datanode

完成以上的所有步骤,整个hadoop集群即可开启成功。
可以通过浏览器来观察集群的一些信息(如各个节点的状态、分布式文件系统目录结构和版本号等)
访问地址如下:

#hadoop访问地址
http://master:50070/
#yarn(资源管理调度)访问地址
http://master:8188/

在这里插入图片描述

4 可用性测试

在完成hadoop集群启动后,可以通过hadoop的一些基本命令来测试集群是否可用,如用put,get,rm等命令进行测试
具体操作命令如下:

#上传本地文件到分布式文件系中的tmp目录
hdfs dfs -put hello.txt /tmp

#下载分布式文件系统tmp目录下的hello.txt文件本地当前目录
hdfs dfs -get /tmp/hello.txt ./

#删除分布式文件系统中tmp目录下的hello.txt文件
hdfs dfs -rm -r /tmp/hello.txt

新建welcom.txt 文件 并编辑内容 如下:

在这里插入图片描述
新建成功,并成功上传到tmp文件夹中
在这里插入图片描述

为了避免混淆,把本地目录下的welcome.txt重命名为123.txt
并从远端下载下来welcome.txt
ls之后显示有welcome.txt,证明我们试验成功。
在这里插入图片描述

当执行删除命令时,最下面会提醒***文件已被删除,如下图这种就是删除成功
在这里插入图片描述

当我们再从远端下载时,下方显示No such file or directory,这证明上面的删除是有效的
在这里插入图片描述

至此,测试完毕,hadoop成功安装并正常运行!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值