zoukankan      html  css  js  c++  java
  • hadoop部署

    创建hadoop用户

    useradd -m hadoop -s /bin/bash # 创建新用户hadoop
    passwd hadoop
    

      

    可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题,执行:

    $ visudo
    root ALL=(ALL) ALL 
    hadoop ALL=(ALL) ALL #为hadoop用户增加sudo权限
    

    su hadoop   #  切换到hadoop用户

    [root@localhost bin]# which java
    /usr/bin/java
    [root@localhost bin]# ls /usr/bin/java -l
    lrwxrwxrwx 1 root root 22 Mar 25 17:49 /usr/bin/java -> /etc/alternatives/java
    [root@localhost bin]# ls -l /etc/alternatives/java
    lrwxrwxrwx 1 root root 29 Mar 25 17:49 /etc/alternatives/java -> /usr/java/jdk-12.0.1/bin/java
    

      

    export JAVA_HOME=/usr/

    source /etc/profile

    配置无密码登录

    我们选择将 Hadoop 安装至 /usr/local/ 中:

    sudo tar -zxf hadoop-2.6.0.tar.gz -C /usr/local     # 解压到/usr/local中
    cd /usr/local/
    sudo mv ./hadoop-2.6.0/ ./hadoop 
    sudo chown -R hadoop:hadoop ./hadoop      # 修改文件权限
    

    # 检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

    cd /usr/local/hadoop
    ./bin/hadoop version
    

      

    Hadoop单机配置(非分布式)

    Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

    现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar可以看到所有例子),包括 wordcount、terasort、join、grep 等。

    在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

    cd /usr/local/hadoop
    mkdir ./input
    cp ./etc/hadoop/*.xml ./input  # 将配置文件作为输入文件
    ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
    [root@localhost hadoop]# cat output/*   # 查看运行结果
    1	dfsadmin
    

    运行Hadoop实例时可能会报错运行Hadoop实例时可能会报错

    若出现提示 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,该 WARN 提示可以忽略,不会影响 Hadoop 正常运行(可通过编译 Hadoop 源码解决,解决方法请自行搜索)。

    若出现提示 “INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknowHostException”,这需要执行如下命令修改 hosts 文件,为你的主机名增加IP映射:vim /etc/hosts

    注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output删除。rm -r ./output

    vim ~/.bashrc
    
    # Hadoop Environment Variables
    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    source ~/.bashrc
    

      

    1. 这些变量在启动 Hadoop 进程时需要用到,不设置的话可能会报错(这些变量也可以通过修改 ./etc/hadoop/hadoop-env.sh 实现)。
    2. Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中
    3. 伪分布式需要修改2个配置文件core-site.xml 和 hdfs-site.xml 。
    4. Hadoop的配置文件是 xml 格式,
    5. 每个配置以声明 property 的 name 和 value 的方式来实现。

    修改 core-site.xml

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop/tmp</value>
            <description>Abase for other temporary directories.</description>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration> 
    

      

    • 修改配置文件 hdfs-site.xml
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
    </configuration>
    

      

    • 执行 NameNode 的格式化:
    ./bin/hdfs namenode -format

    成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

    • 开启 NaneNode 和 DataNode 守护进程:
    ./sbin/start-dfs.sh

    若出现如下 SSH 的提示 “Are you sure you want to continue connecting”,输入 yes 即可。

    首次启动hadoop时可能会提示:“WARN util.NativeCodeLoader…” 如前面提到的,这个提示不会影响正常使用。

    • 判断是否启动成功

    启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和SecondaryNameNode(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

    #################

    vi /etc/ssh/sshd_config

    修改之后为:

    PermitRootLogin yes

    UsePAM no

    PasswordAuthentication yes

    RSAAuthentication yes

    PubkeyAuthentication yes

    (3)修改文件夹以及文件的权限。

    #chmod 700 /home/Hadoop/.ssh

    #chmod 644 /home/Hadoop/.ssh/authorized_keys

    @@@@@@

    5.1 第一次执行start-dfs.sh启动hadoop时报错:

    [root@localhost hadoop]# start-dfs.sh 
    Starting namenodes on [localhost]
    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 [localhost]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    [root@localhost hadoop]#

    原因:启动时用的是root用户,不是hadoop的默认用户(hadoop默认用户为hadoop)

    将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.sh,stop-yarn.sh顶部也需添加以下:
    #!/usr/bin/env bash
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

    @@@@@@@@

    5.2 解决完上述用户问题后,执行start-dfs.sh报permission denied错误:

    [root@localhost hadoop]# start-dfs.sh 
    WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
    Starting namenodes on [localhost]
    Last login: Mon Jul 23 22:32:50 CST 2018 on pts/0
    localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
    localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    Starting datanodes
    Last login: Mon Jul 23 23:01:39 CST 2018 on pts/0
    localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    Starting secondary namenodes [localhost]
    Last login: Mon Jul 23 23:01:39 CST 2018 on pts/0
    localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    [root@localhost hadoop]# 

    原因:启动前未配置登录秘钥信息。

    解决方法(注意把$hostname替换成实际hostname):

    #cd ~/.ssh
    #ssh-keygen -t rsa
    #ssh-copy-id $hostname

    @@@@@@@@@@@

    第四步:ssh 免密登陆
    为防止权限问题从这一步开始使用普通用户进行操作,cd 一下进入用户目录输入命令’cd .ssh/‘进入.ssh目录下,输入命令’ssh-keygen -f rsa’(生成公私钥)在.ssh目录下会出现两个文件,将后缀为.pub的文件复制到authorized_keys中,然后重启(在特权用户模式下输入命令’reboot’)。

    第五步:配置jdk和hadoop路径
    ’vim ~/.bashrc’:

    source ~/.bashrc

    第六步:配置文件
    本步骤一共需要配置6个文件

    第一个:hadoop-env.sh
    export JAVA_HOME=${JAVA_HOME}

    第二个:yarn-env.sh
    #export JAVA_HOME=/home/…

    第三个:hdfs-site.xml
    如下图:

    里面的地址根据自己的情况进行修改。

    第四个:yarn-site.xml
    如下图:


    第五个:core-site.xml
    如下图:

    此处tmp目录地址根据自己创建的情况进行修改。

    第六个:mapred-site.xml
    原文件夹中没有mapred-site.xml文件,但有一个文件叫做mapred-site.xml.t…(可以使用tab键进行补全),将这个文件重命名为我们需要的文件名。修改内容如下图:

    第七步:格式化与启动

    进入hadoop安装目录下的bin目录输入命’hadoop namenode -format’进行格式化,如果没有错误,则进入hadoop 安装目录下的sbin目录,先启动"start-dfs.sh"脚本,再启动"start-all.sh"脚本。

    Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 解决方法

    sudo vim /etc/ssh/sshd_config 增加如下修改 PasswordAuthentication yes

    ###########################

    • 通过查看启动日志分析启动失败原因

    有时 Hadoop 无法正确启动,如 NameNode 进程没有顺利启动,这时可以查看启动日志来排查原因,注意几点:

    1. 启动时会提示形如 “dblab: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.out”,   其中 dblab 对应你的主机名,但启动的日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.log 中,所以应该查看这个后缀为 .log 的文件;
    2. 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,看下记录的时间就知道了。
    3. 一般出错的提示在最后面,也就是写着 Fatal、Error 或者 Java Exception 的地方。
    4. 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。

    成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

     

  • 相关阅读:
    BZOJ_2802_[Poi2012]Warehouse Store_堆+贪心
    BZOJ_1025_[SCOI2009]游戏_DP+置换+数学
    BZOJ_3672_ [Noi2014]购票_CDQ分治+斜率优化
    BZOJ_3671_[Noi2014]随机数生成器_set+贪心
    BZOJ_1998_[Hnoi2010]Fsk物品调度_并查集+置换
    BZOJ_1119_[POI2009]SLO_置换+贪心
    「JOI Open 2016」摩天大楼(笛卡尔树dp+优化)
    【GDOI2020模拟01.16】树上的鼠 (博弈+长链剖分优化dp)
    【GDOI2020模拟01.16】划愤(nim积+行列式)
    Codeforces [Hello 2020] 1284F New Year and Social Network(图论匹配推理+lct)
  • 原文地址:https://www.cnblogs.com/linuxws/p/10760082.html
Copyright © 2011-2022 走看看