1

hadoop集群搭建

  • 环境 centos6.7
  • 虚拟机三台 yh01(主节点) yh02 yh03 一下如无特殊说明都是在主节点上配置

1.下载

http://mirrors.hust.edu.cn/ap...

hadoop-3.1.1.tar.gz

2.安装

2.1 参考文档

2.2 解压

2.3 配置

  • 配置文件位置 /export/servers/hadoop-3.1.1/etc/hadoop/
  • hadoop-env.sh 27
  • #jdk 环境 因为要远程调用 ${java_home}找不到变量  
    export JAVA_HOME=/export/servers/jdk1.8.0_141
  • core-site.xml

    <configuration>
            <property>
            #hadoop使用的文件系统(uri) hdfs 和hdfs的位置
                <name>fs.defaultFS</name>
                <value>hdfs://yh01:9000</value>
            </property>
            <property>
            #hadoop运行时产生的文件的存储位置
                <name>hadoop.tmp.dir</name>
                <value>/export/data/HADOOP/apps/hadoop-3.1.1/tmp</value>
            </property>
    </configuration>
  • hdfs-site.xml 都有默认值 也可以不配置
  • <configuration>
        ----------------
        <property>
        #namenode上存储hdfs名字空间元数据
            <name>dfs.namenode.name.dir</name>
            <value>/export/data/HADOOP/hdfs/name</value>
        </property>
        <property>
        #hdfs datanode上数据块的物理存储位置
            <name>dfs.datanode.data.dir</name>
            <value>/export/data/HADOOP/hdfs/data</value>
        </property>
        <property>
        #hdfs数据副本数量 3分副本 应小于datanode机器数量
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        ----------------
        <property>
            <name>dfs.secondary.http.address</name>
            <value>yh01:50090</value>
        </property>
    </configuration>
  • mapred-site.xml
  • <configuration>
            <property>
                <name>mapreduce.framework.name</name>
                #mr运行的平台 默认local本地模式
                <value>yarn</value>
            </property>
        </configuration>
  • yarn-site.xml
  • <configuration>
            <property>
                <name>yarn.resourcemanager.hostname</name>
                #yarn (MR)的ResourcesManager管理界面的地址 主机名称
                <value>yh01</value>
            </property>
            <property>
                #reducer获取数据的方式
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
        </configuration>
  • 添加hdfs权限 vim sbin/start-dfs.sh sbin/stop-dfs.sh 在顶部空白位置添加
  • HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    • 否则会报错 (缺少用户权限定义造成的)因此编辑启动和关闭
    • ERROR: Attempting to launch hdfs namenode as root
      ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
      Starting datanodes
      ERROR: Attempting to launch hdfs datanode as root
      ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
      Starting secondary namenodes [localhost.localdomain]
      ERROR: Attempting to launch hdfs secondarynamenode as root
      ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
  • 添加yarn权限 vim sbin/start-yarn.sh sbin/stop-yarn.sh
  • YARN_RESOURCEMANAGER_USER=root
    HDFS_DATANODE_SECURE_USER=yarn
    YARN_NODEMANAGER_USER=root

2.4 添加环境变量

  • vim /etc/profile
  • export JAVA_HOME=/export/servers/jdk1.8.0_141
    export PATH=$PATH:$JAVA_HOME/bin
    
    #hadoop
    export HADOOP_HOME=/export/servers/hadoop-3.1.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • source /etc/profile
  • 临时简单验证下有没有问题
  • [root@yh01]# cd $HADOOP_HOME
    
    [root@yh01 hadoop-3.1.1]#  bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output 'dfs[a-z.]+'
  • 修改ssh (yh01 yh02 yh03 都需要执行ssh-keygen以下的命令)
  • 现在检查您是否可以在没有密码的情况下ssh到localhost:
     ssh yh01
     
     如果在没有密码短语的情况下无法ssh到localhost,请执行以下命令:
    
     ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
     cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
     chmod 0600 ~/.ssh/authorized_keys
     
     添加本机ssh到本机ssh中 当使用start-all.sh启动works下的所有机器时能直接无秘钥启动
     同时分发yh01主机的秘密到其他机器中
     ~/.ssh/authorized_keys 包含 当前机器 及主节点机器的秘钥
     
  • 修改/etc/ssh/sshd_config 文件
  • 需要修改的 如果有注释 就发开注释
    
    RSAAuthentication yes 
    PubkeyAuthentication yes #这两项为打开公钥模式 
    AuthorizedKeysFile .ssh/authorized_keys #配置公钥记录文件 
    PasswordAuthentication yes #打开密码验证模式

2.4.1 分发hadoop文件

  • 分发$HADOOP_HOME的文件到其他机器
[root@yh01 hadoop-3.1.1]# pwd
/export/servers/hadoop-3.1.1
[root@yh01 hadoop-3.1.1]# scp -r hadoop-3.1.1/ root@yh02:$PWD
[root@yh01 hadoop-3.1.1]# scp -r hadoop-3.1.1/ root@yh03:$PWD
  • 修改works文件 文件中的所有工作者主机名或IP地址,每行一个

    添加hadoop节点
    
    vim hadoop-3.1.1/etc/hadoop/works
      假设有3台
     
      yh01
      yh02
      yh03
      
      要添加本机ssh链接
      ssh yh01

3 启动

3.1 先格式化HDFS 启动HDFS 然后启动yarn

如果配置了workds文件
只需要在yh01上执行即可 分割线一下的可以忽略

hdfs namenode -format 
启动 
$HADOOP_HOME/sbin/start-dfs.sh 
$HADOOP_HOME/sbin/start-yarn.sh
$HADOOP_HOME/bin/mapred --daemon start historyserver
关闭
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
$HADOOP_HOME/bin/mapred --daemon stop historyserver
===========================



在主节点 yh01上执行
$HADOOP_HOME/bin/hdfs --daemon start namenode
在副节点 yh02 yh03上执行
$HADOOP_HOME/bin/hdfs --daemon start datanode
#格式化成功
2018-08-24 16:41:04,983 INFO common.Storage: Storage directory /export/data/HADOOP/data/name has been successfully formatted.

3.2 批量操作

启动所有
start-all.sh 
关闭所有
stop-all.sh

3.3 验证

[root@yh01 logs]# jps
5633 Jps
4498 ResourceManager
4020 DataNode
5556 JobHistoryServer
3879 NameNode
4247 SecondaryNameNode
4635 NodeManager

[root@yh02 hadoop-3.1.1]# jps
5856 Jps
3969 Bootstrap
5345 NodeManager
5235 DataNode
3919 QuorumPeerMain


[root@yh03 hadoop-3.1.1]# jps
3729 QuorumPeerMain
4820 NodeManager
4711 DataNode
3768 Bootstrap
5050 Jps

4访问manager页面

Daemon Web Interface Notes
NameNode http://nn_host:port/ Default HTTP port is 9870.
ResourceManager http://rm_host:port/ Default HTTP port is 8088.
MapReduce JobHistory Server http://jhs_host:port/ Default HTTP port is 19888.

source
24 声望2 粉丝

目标:用半年的时间记录之前两三年中遇到的java问题