hadoop安装文档

一、安装前准备步骤

  • 操作系统:CentOS 7(CentOS-7-x86_64-Everything-1810.iso)
  • 版本:hadoop-2.8.5
  • 用户:hadoop
  • 解压: tar -zxvf hadoop-2.8.5.tar.gz

1、禁用防火墙(root)

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

2、配置hostname(此步骤影响远程域名连接)

  • vi /etc/hostname
vi /etc/hostname
//每台机器起相应的名字
//例如:192.168.37.128
//在/etc/hostname文件中写入sunsk01即可

3、修改hosts文件(hadoop)

vi /etc/hosts
//添加下面内容
192.168.37.128   sunsk01
192.168.37.129   sunsk02
192.168.37.130   sunsk03

4、JDK环境(root)

  • jdk 1.8 及以上
  • 注意:卸载自带OPEN JDK
  • rpm -qa | grep jdk
  • rpm -e --nodeps ****

5、ssh免密登录(root,自己对自己也要做免密登录)

  • ssh-keygen -t rsa
  • ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.37.128[129|130]

6、修改环境变量(hadoop)

vi ~/.bash_profile
//添加hadoop环境变量
export HADOOP_HOME=/app/hadoop-2.7.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
//让配置生效
source ~/.bash_profile

7、创建hadoop存储目录(root创建后,授权)

//在一台namenode上创建即可(sunsk01)
mkdir -p /data01/namenode
//在所有datanode上创建即可(sunsk01,sunsk02,sunsk03)
mkdir -p /data01/datanode
  • 没有权限时
//使用命令注意data01下是否有其他用户的文件
//如果有单个修改文件

命令:chown -R hadoop:hadoop /data01

 二、hadoop配置文件配置

site文件会覆盖默认的default文件配置

// hadoop配置文件目录

cd /usr/local/src/hadoop-2.8.5/etc/hadoop
  • 1、修改hadoop-env.sh(如果设置了JAVA_HOME,就跳过此步骤即可)
export JAVA_HOME=${JAVA_HOME}
  • 2、配置core-site.xml
vi core-site.xml
//在<configuration></configuration>增加hdfs的端口信息
//增加的内容如下:
    <!-- 配置主机master位置 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://sunsk01:9000</value>
    </property>
    <!-- 配置datanode文件存储位置,默认是/tmp,此目录是临时文件,所以需修改 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/data01/dfs/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
  • 3、配置mapred-site.xml(copy一份)
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
//在<configuration></configuration>增加内容:
    <!-- 指定mapreduce的执行框架,默认在本地以单机模式运行 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>sunsk01:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>sunsk01:19888</value>
    </property>
  • 4、配置hdfs-site.xml
vi hdfs-site.xml
//在<configuration></configuration>增加内容:

   <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data01/dfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data01/dfs/dn</value>
    </property>
    <!-- 修改文件备份数,默认是三份 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 检查集群状态间隔时间,单位ms,默认300000 -->
    <property>
        <name>dfs.namenode.heartbeat.recheck-interval</name>
        <value>10000</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>sunsk01:9001</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
  • 5、配置yarn-site.xml
vi yarn-site.xml
//在<configuration></configuration>增加内容:
    <!-- java开发用 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- java开发用 -->
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <!-- 指定resourcemanager的位置 -->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>sunsk01:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>sunsk01:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>sunsk01:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>sunsk01:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>sunsk01:8088</value>
    </property>
  • 6、集中式管理-配置slaves(由于只有三个节点,所有 sunsk01节点既是namenode,也是datanode)
vi slaves
//下面是所有hadoop datanode的主机名
用下面内容覆盖slaves文件

sunsk01
sunsk02
sunsk03
  • 7、将hadoop配置好的包发送到每台datanode节点(root)
//发送命令如下

scp -r /app/hadoop-2.7.3 sunsk02:/app
scp -r /app/hadoop-2.7.3 sunsk03:/app

三、启动hadoop

  • 1、格式化namenode
//特别注意:只在namenode节点执行操作,不需要再datanode机器上执行任何操作

hadoop namenode -format
  • 2、启动所有hadoop守护进程
//特别注意:只在namenode节点执行操作,不需要再dananone机器上执行任何操作

//因为配置了环境变量,所以在任何目录都可以执行start-all.sh脚本

start-all.sh

四、检验是否安装成功

  • 1、namenode节点检测是否成功
命令:   jps

// jps后会出现一下五个进程

DataNode
NodeManager
ResourceManager
SecondaryNameNode
NameNode

进入:http://IP:50070
查看是否能进入
  • 2、datanode节点检测
命令:   jps

//jps后会有两个进程
NodeManager
DataNode

五、常用维护命令

jps 查看进程是否存在
http://IP:50070    是否能进去
执行:hadoop fs -ls /
是否报错,出现文件夹即为安装成功

六、常见问题

启动后会有进程缺少
查看hadoop下的log日志
解决问题后删除每台机器的/data01/dfs
重新格式化,重新启动,重复第三步

七、卸载

rm -rf /data01/dfs
rm -rf /usr/local/src/hadoop-2.8.5

八、自己遇到的问题

  1、因为自己安装的是jdk11,所以总是报错非法调用(反射),百度说高版本的jdk不支持那种反射了,所以换回jdk8就可以了。

作者:孙双凯_06e