Hadoop3.x 环境搭建&&填坑

Hadoop3.x 环境搭建&&填坑

    • 环境配置 && 安装JDK && 安装Hadoop
    • Hadoop运行模式之单机模式(官网Grep+WordCount案例)
      • 官方Grep案例
      • 官方WordCount案例
    • Hadoop运行模式之伪分布式模式
      • 1. 分析
      • 2. 步骤
    • 问题
    • 下面开始填坑
      • 端口: 50070 ----> 9870
      • 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
      • 执行rsync 命令报错 ===> 需要同步的服务器都要安装这个命令(同步和被同步的机器)
      • 集群配置文件修改
      • etc/hadoop/workers # 替换2.x版本的slaves
      • 安装时间同步器

环境配置 && 安装JDK && 安装Hadoop

笔者自学大数据笔记

  1. 设置静态IP

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    
    NAME=eth0
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    HWADDR=00:50:56:25:71:6a
    IPADDR=192.168.0.111
    GATEWAY=192.168.0.1
    DNS1=192.168.0.1
    
    # 保存退出
    
  2. 修改主机名

    vim /etc/sysconfig/network
    
    HOSTNAME=hadoop01
    
  3. 关闭防火墙

    # 关闭防火墙 (开启:start,重启:restart,关闭:stop,状态:status,开启自启动:enable,关闭自启动:disable)
    systemctl stop firewalld
    # 重启防火墙这样也可以
    firewall-cmd --reload
    
    # 关闭防火墙自启动
    systemctl disable firewalld
    # 列出开放的所有端口
    firewall-cmd --list-ports
    # 查询某个端口是否开放 eg:3306  响应:yes或no
    firewall-cmd --zone=public --query-port=3306/tcp
    # 添加防火墙端口后,要重启防火墙才生效
    # 添加一个端口  eg:3306    持久开启(服务器重启,依然保持开启状态,不添加则属于临时添加端口): --permanent
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # 添加一组连续的端口  eg:3306,3307,3308,3309
    firewall-cmd --zone=public --add-port=3306-3309/tcp --permanent
    
  4. 创建dev用户

    #创建用户  默认创建分组(名跟用户名一样)并将用户添加到该组中
    useradd dev
    
    # 创建分组  eg:新建分组devgroup
    groupadd devgroup
    # 新建用户同时添加分组  eg:新建用户aaa并将其添加到已有的devgroup分组中
    useradd -g devgroup aaa
    # 给已有用户添加分组 eg:将已存在用户dev添加到已存在分组devgroup中
    usermod -G devgroup dev
    # 查询centos7目前有哪些用户 # cut -d : -f 1 /etc/passwd
    cat /etc/passwd
    # 查询目前用户分组情况
    cat /etc/group
    
  5. 配置hadoop具有root权限

    1. 先用root账户修改 /etc/sudoers 文件权限为可编辑,默认只读 (-r–r-----)

    2. 修改文件 添加用户权限

    3. 改回 /etc/sudoers 文件权限为只读

    #步骤1)
    chmod 777 /etc/sudoers
    
    #步骤 2)
    vim /etc/sudoers
    # 复制 [ root    ALL=(ALL)       ALL ]  这行添加在下面修改下用户名就可以  eg:dev用户添加具有root权限
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    dev    ALL=(ALL)       ALL
    # 保存退出
    
    #步骤3)
    chmod 440 /etc/sudoers
    
  6. /opt目录创建module software文件夹

    mkdir /opt/software /opt/module
    
  7. 修改module software文件夹所有者为dev用户:dev分组

    # -R 递归文件夹,修改文件,文件夹拥有者
    chown -R dev:dev /opt/software /opt/module
    
  8. 安装JDK(上传压缩包,解压,配置环境变量,配置文件生效source一下),此处略过~~

  9. 安装hadoop(上传压缩包,解压,配置环境变量 bin目录 && sbin目录 ,配置文件生效source一下),此处略过~~

Hadoop运行模式之单机模式(官网Grep+WordCount案例)

官方Grep案例

  1. 在hadoop-3.3.0文件夹下面创建一个input文件夹

    mkdir input
    
  2. 将hadoop的etc文件夹下xml配置文件复制到input 注意:output文件夹不能存在,否则报错文件已存在异常 FileAlreadyExistsException: Output directory file:/opt/module/hadoop-3.3.0/output already exists

    cp /opt/module/hadoop-3.3.0/etc/hadoop/*.xml ../../input
    
  3. 执行share目录下的MapReduce程序

    如果遇到执行程序找不到主类: 看你执行命令是否为 hadoop jar xxx,以为hadoop xxx就可以啦O~O

    error : [ 错误: 找不到或无法加载主类 share.hadoop.mapreduce.hadoop-mapreduce-examples-3.3.0.jar ]

    hadoop jar /opt/module/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z.]+'
    
  4. 查看输出结果

    cat output/part-r-00000
    
    # 显示结果
    1	dfsadmin
    

官方WordCount案例

  1. 在hadoop-3.3.0文件夹下面创建一个wcinput文件夹

    mkdir wcinput
    
  2. 在 wcinput 文件下创建一个 wc.txt文件,并添加内容

    # 创建文件命令 # touch wc.txt
    vim wc.txt
    
    # wc.txt文件内容 随意单词 eg:↓↓↓
    hello word map reduce yarn 
    hadoop hadoop dev dev test
    test test aaa
    cechsi namenode datanode resourcemanager
    who
    am
    i
    
    # 保存退出 :wq
    
  3. 回到hadoop-3.3.0文件夹下执行wordcount程序

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount wcinput/wc.txt output
    
  4. 查看结果

    cat wcoutput/part-r-00000
    
    # 显示结果
    aaa	1
    am	1
    cechsi	1
    datanode	1
    dev	2
    hadoop	2
    hello	1
    i	1
    map	1
    namenode	1
    reduce	1
    resourcemanager	1
    test	3
    who	1
    word	1
    yarn	1
    

Hadoop运行模式之伪分布式模式

1. 分析

1)配置集群

2)启动,测试集群增/删/改

3)执行WordCoung案例

2. 步骤

1)配置集群

  • 配置hadoop文件夹下etc/hadoop/adoop-env.sh

    # 查看 $JAVA_HOME
    echo $JAVA_HOME
    /opt/module/jdk1.8.0_221/bin
    
    # 修改etc/hadoop/adoop-env.sh中JAVA_HOME配置
    export JAVA_HOME=/opt/module/jdk1.8.0_221/bin
    # 保存退出 :wq
    
  • 配置core-site.xml

    
    <property>
    	<name>fs.defaultFSname>
    	<value>hdfs://hadoop101:9000value>
    property>
    
    
    <property>
    	<name>hadoop.tmp.dirname>
    	<value>/opt/module/hadoop-3.3.0/data/tmpvalue>
    property>
    
  • 配置hfs-site.xml

    
    <property>
    	<name>dfs.replicationname>
    	<value>1value>
    property>
    

2)启动集群(hadoop文件夹下)

  • 格式化NameNode(第一次启动时格式化,以后就不要总格式化)

    	bin/hdfs namenode -format
    
  • 启动NameNode

    	sbin/hadoop-daemon.sh start namenode
    
  • 启动DataNode

    	sbin/hadoop-daemon.sh start datanode
    

    3)查看集群

  • 查看集群是否启动成功
jps

4755 DataNode
4835 Jps
4630 NameNode
  • WEB端查看HDFS
# hadoop3.x 版本
http://hadoop01:9870
# hadoop2.x版本
http://hadoop01:50070
  • 查看产生的log日志

Hadoop3.x 环境搭建&&填坑_第1张图片

问题

  • 思考:为什么不能一直格式化 NameNode,格式化NameNode,要注意什么?

注意:格式化NameNode,会产生新的集群 id,导致 NameNode 和DataNode 的集群 id 不一致,集群找不到已往数据。所以,格式 NameNode 时,一定要先删除data 数据和 log 日志,然后再格式化 NameNode

# 查看namenode集群ID
cat data/tmp/dfs/name/current/VERSION

namespaceID=851295736
clusterID=CID-2c00d4b3-1b98-4914-9d80-853c104b65f1

# 查看datanode 集群ID(会发现和namenode中箪集群ID完全一样)
cat data/tmp/dfs/data/current/VERSION

clusterID=CID-2c00d4b3-1b98-4914-9d80-853c104b65f1
datanodeUuid=9fc063f9-dad5-4ac9-a7e9-512a35782361

4)操作集群

下面开始填坑

端口: 50070 ----> 9870


错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

主机执行hadoop classpath,hadoop3.x版本需要配置hadoop classpath,然后重启yarn
vim yarn-site.xml 添加一个配置 hadoop classpath

<property>
        <name>yarn.application.classpathname>    <value>/opt/module/hadoop-3.3.0/etc/hadoop:/opt/module/hadoop-3.3.0/share/hadoop/common/lib/*:/opt/module/hadoop-3.3.0/share/hadoop/common/*:/opt/module/hadoop-3.3.0/share/hadoop/hdfs:/opt/module/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/opt/module/hadoop-3.3.0/share/hadoop/hdfs/*:/opt/module/hadoop-3.3.0/share/hadoop/mapreduce/*:/opt/module/hadoop-3.3.0/share/hadoop/yarn:/opt/module/hadoop-3.3.0/share/hadoop/yarn/lib/*:/opt/module/hadoop-3.3.0/share/hadoop/yarn/*value>
property>

执行rsync 命令报错 ===> 需要同步的服务器都要安装这个命令(同步和被同步的机器)

bash: rsync: 未找到命令
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]


集群配置文件修改

集群配置 corsite.xml


<property>
        <name>fs.defaultFSname>
        <value>hdfs://hadoop02:9000value>
property>

<property>
        <name>hadoop.tmp.dirname>
        <value>/opt/module/hadoop-3.3.0/data/tmpvalue>

property>

修改hadoop-env.sh  &&  yarn-env.sh  &&  mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_221

vim hdfs.site.xml

<property>
        <name>dfs.replicationname>
        <value>3value>
property>

<property>
      <name>dfs.namenode.secondary.http-addressname>
      <value>hadoop04:50090value>
property>

yarn-site.xml


<property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
property>

<property>
        <name>yarn.resourcemanager.hostnamename>
        <value>hadoop03value>
property>

mapred-site.xml


<property>
		<name>mapreduce.framework.namename>
		<value>yarnvalue>
property>

etc/hadoop/workers # 替换2.x版本的slaves

192.168.0.112
192.168.0.113
192.168.0.114

安装时间同步器

yum install ntpd

有点乱 嘻嘻

你可能感兴趣的:(大数据,hadoop)