zoukankan      html  css  js  c++  java
  • Hadoop3.2.0 伪分布环境搭建

    Hadoop伪分布环境搭建

    配置网络

    vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    

    修改主机名

    vi /etc/hostname
    

    安装JDK

    mkdir -p /data/soft
    

    配置JDK环境变量

    配置环境变量

    vi /etc/profile
    ......
    export JAVA_HOME=/data/soft/jdk1.8
    export PATH=.:$JAVA_HOME/bin:$PATH
    

    生效环境变量

    source /etc/profile
    

    配置免密登录

    生成秘钥

    ssh-keygen -t rsa
    

    rsa是一种加密算法

    注意:执行这个命令后,需要连续按4次回车键到linux命令才会表示这个操作执行结束,在按回车的时候不需要输入任何内容

    [root@bigdata01 ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
     +---[RSA 2048]----+
    | o. | | ooo.|
    | o.. = o o  | 
    | +o* o * o  |
    |..=.= B S = | 
    |.o.o o B = .| 
    |o.o . +.o . | 
    |.E.o.=...o  | 
    | .o+=*..    |
     +----[SHA256]-----+
    

    执行成功之后,会在~/.ssh目录下生成对应的公钥和秘钥文件

    [root@bigdata01 ~]# ll ~/.ssh/
    total 12
    -rw-------. 1 root root 1679 Apr  7 16:39 id_rsa
    -rw-r--r--. 1 root root  396 Apr  7 16:39 id_rsa.pub
    -rw-r--r--. 1 root root  203 Apr  7 16:21 known_hosts
    

    下一步将公钥拷贝到需要免秘钥登录的机器上。

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    

    测试免秘钥配置是否生效

    ssh bigdata01
    

    安装Hadoop 3.2.0

    上传hadoop安装包到/data/soft目录下

    解压hadoop安装包

    tar -zxvf hadoop-3.2.0.tar.gz
    

    hadoop目录下有两个重要的目录,一个是bin目录,一个是sbin目录。

    bin:这里面有hdfs、yarn等启动脚本,这些脚本后期主 要是为了操作hadoop集群中的hdfs和yarn组件。
    sbin:这里有很多start stop开头的脚本,负责启动或者停止组件。

    修改相关配置文件

    • hadoop-env.sh
    • core-site.xml
    • hdfs.site.xml
    • mapred-site.xml
    • yarn-site.xml
    • works

    首先修改hadoop-env.sh,增加环境变量信息,添加在hadoop-env.sh文件末尾即可。
    JAVA_HOME:指定JAVA安装的位置
    HADOOP_LOG_DIR:hadoop日志安装的位置

    export JAVA_HOME=/data/soft/jdk1.8
    export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
    

    修改core-site.xml文件

    注意fs.defaultDFS属性的主机名需要和配置的主机名保持一致

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://bigdata01:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/data/hadoop_repo</value>
       </property>
    </configuration>
    

    修改hdfs-site.xml,把hdfs中文件副本数设置为1,因本次伪分布只有一个节点。

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    

    修改mapred-site.xml,设置mapreduce使用的资源计算框架

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    修改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
    	    <name>yarn.nodemanager.env-whitelist</name>        
    	    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_TARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>
    

    修改works,设置集群中从节点的主机名信息,伪分布就一台主机,所以就填写BigData01即可

    vi workers
    bigdata01
    

    配置到文件部分修改至此告一段落,但还不能直接启动。因为hadoop中的HDFS是一个分布式的文件系统,文件系统在使用之前是需要先格式化的。

    格式化HDFS

    cd /data/soft/hadoop-3.2.0
    bin/hdfs namenode -format
    

    当看到successfully formatted这条信息就说明格式化成功了。

    注意:格式化只能执行一次,如果格式化的时候失败了,可以修改配置文件后在执行格式化,如果格式化成功了就不能再反复的执行,否则集群会出现NameNode current Version和Data current Version中ClusterId不一致
    如果确实需要重复执行,那么需要把/data/hadoop_repo目录中的内容全部删除,再执行格式化。

    启动伪分布集群

    使用sbin目录下的start-all.sh脚本

    [root@bigdata01 hadoop-3.2.0]# sbin/start-all.sh
    Starting namenodes on [bigdata01]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    Starting datanodes
    ERROR: Attempting to operate on hdfs datanode as root
    ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
    Starting secondary namenodes [bigdata01]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operatio Starting resourcemanager
    ERROR: Attempting to operate on yarn resourcemanager as root
    ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation. Starting nodemanagers
    ERROR: Attempting to operate on yarn nodemanager as root
    ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
    

    执行的时候会发现很多ERROR信息,提示缺少HDFS和YARN的一些用户信息。
    解决方案如下:
    修改sbin目录下的start-dfs.sh,stop-dfs.sh这两个脚本信息。

    cd sbin
    vi start-dfs.sh
    # 添加用户信息如下
    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    
    vi stop-dfs.sh
    # 添加用户信息如下
    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    

    修改sbin目录下的start-yarn.shstop-yarn.sh这两个脚本信息。

    vi start-yarn.sh
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    
    vi stop-yarn.sh
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    

    注:不要将添加内容放到脚本最下面,这样启动的时候依然会报错,建议放在limit之后
    再次启动集群

    [root@bigdata01 ~]# start-all.sh 
    Starting namenodes on [bigdata01]
    Last login: Sun Mar 28 17:15:22 CST 2021 on pts/0
    Starting datanodes
    Last login: Sun Mar 28 17:15:46 CST 2021 on pts/0
    Starting secondary namenodes [bigdata01]
    Last login: Sun Mar 28 17:15:48 CST 2021 on pts/0
    Starting resourcemanager
    Last login: Sun Mar 28 17:15:53 CST 2021 on pts/0
    Starting nodemanagers
    Last login: Sun Mar 28 17:16:03 CST 2021 on pts/0
    

    验证集群进行信息

    执行jps命令可以看到集群的进程信息,除去jps这个进程之外,还需要有5个进程才说明集群是正常启动的。

    [root@bigdata01 ~]# jps
    13539 SecondaryNameNode
    13779 ResourceManager
    13177 NameNode
    18874 Jps
    13307 DataNode
    13919 NodeManager
    

    还可以通过WebUI界面来验证集群是否正常启动

    如果想通过主机名访问,需要修改windows/MAC 中的host文件。

    停止集群

    如果修改了集群的某些配置文件或者其他原因需要停止集群,可以使用stop-all.sh

    [root@bigdata01 ~]# stop-all.sh
    Stopping namenodes on [bigdata01]
    Last login: Sun Mar 28 17:06:24 CST 2021 from gateway on pts/0
    Stopping datanodes
    Last login: Sun Mar 28 17:15:00 CST 2021 on pts/0
    Stopping secondary namenodes [bigdata01]
    Last login: Sun Mar 28 17:15:02 CST 2021 on pts/0
    Stopping nodemanagers
    Last login: Sun Mar 28 17:15:15 CST 2021 on pts/0
    Stopping resourcemanager
    Last login: Sun Mar 28 17:15:20 CST 2021 on pts/0
    
  • 相关阅读:
    vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You
    Vue2.x是怎么收集依赖的
    只绑定一次事件的简单方法
    Proxy是怎么做数据劫持的
    使用babel进行打包
    使用npm link进行模块调试
    Webpack 热加载插件的实现原理
    Vue 服务端渲染的数据流
    Vue的生命周期钩子
    Linux定时任务
  • 原文地址:https://www.cnblogs.com/shine-rainbow/p/14590675.html
Copyright © 2011-2022 走看看