学习心得
        在学习Hadoop这门课程的过程中,我收获了很多宝贵的经验和知识。首先,我了解到Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的存储和分析。通过学习Hadoop,我深入理解了大数据处理的原理和方法,我学会了如何搭建和配置Hadoop集群。总结起来,学习Hadoop让我深入了解了大数据处理的原理和方法,掌握了搭建和配置Hadoop集群的技能,通过课堂上的练习更加深入的了解了Hadoop这门课程的原理以及重要性,相信在以后的学习工作当有所进步!下面来了解一下Hadoop集群搭建以及过程中可能出现的问题和解决方法。

hadoop搭建准备工作
       1. ip配置:用虚拟机虚拟网络编辑器
            - 为每台主机设置ip
       2. 主机名配置:vi /etc/hostname
            - 为每个节点设置主机名
       3. 主机映射 :vi /etc/hosts
            - 主机ip  主机名
            - 例如:192.XXX.XXX.XXX  hadoopm
            - 如果有多个节点,则需要分别建立主机ip与主机名的映射
       4. 关闭防火墙和sellinux(linux自带的权限认证)
            - service iptables stop
            - vi /etc/sellinux/config
      5. 将系统的启动级别改为3
            - vi etc/inittab : 选择3
            - 权限3:完全多用户模式
            - 权限5:xll图形用户界面
    
      6. 创建普通用户,并为普通用户添加sudolers权限
           - 创建用户useradd 用户名
           - 设置密码passwd 用户名
           - 添加权限:vi /etc/sudoers
           - 注意:如果搭建多个节点的完全分布式,各个节点的普通用户名和密码必须要相同

7. 配置免密登录
           - 先切换到创建的普通用户hadoop_user (123456)
           - 生成密钥:ssh-keygen
                - 多个节点的完全分布式,所有节点都要生成密钥
           - 发送密钥:
                - cd .ssh/
                - ssh-copy-id 主机名
                - 多个节点的完全分布式,各个节点之间要相互发送密钥(因为可能需要从任何一台节点机器登录其他节点机器)
          - 验证:ssh 主机名
                - 多个节点的完全分布式,各个节点之间都要相互验证

8. 安装jdk
            - 配置:vi /etc/profile
                 - 在末尾加入:export JAVA_HOME=jdk解压的目录名
                                         export PATH=P A T H : PATH:PATH:JAVA_HOME/bin
           - 让配置生效: source /etc/profile
           - 验证: java -version
           - 写在jdk:  rpm -qa | grep jdk
 
      9. 时间同步:伪分布式不需要,完全分布式必须在每个节点做
           - 不能联网的情况下,手动指定时间( date -s 时间), 或者手动搭建一个时间服务器
           - 可以联网的情况下,找一个公网中的公用的时间服务器,所有节点中的时间与公共时间服务器保持一致
                - ntpdate 公网的时间服务器地址

(一)伪分布式
      1. 选择安装版本
           - 不选太陈旧的版本,也不选太新的版本(多数企业没有普及应用)
           - 2.7版本是目前企业用的最多的版本
      2. 切换到普通用户:一般企业不会让你使用root用户,需要申请
      3. 上传安装包,解压
      4. 修改配置文件
           - 配置文件都在安装目录下的etc/hadoop目录下(本目录是配置文件存储目录)
                - bin\sbin目录:启动文件
                - lib目录:工程依赖的java包
                - share目录:共享工具
          - 需要修改6个配置文件
                - hadoop-env.sh
                      - 修改java环境变量:export JAVA_HOME=/usr/local/jdk

- core-site.xml
                      - common模块:核心、公共的配置文件
                      - 配置:从官网上的相应版本的文档中直接copy
                      - 配置主节点的url链接
                                     -   fs.defaultFS
                                         hdfs://hadoopm:9000
                                     -  通信协议://主机名:端口号

- hdfs-site.xml
                      - 配置副本个数:3个
                      -   dfs.replication
                           3
                 - yarn-site.xml
                       -  yarn.nodemanager.aux-services
                           mapreduce_shuffle
                      - 配置yarn上资源调度的程序mapreduce_shuffle

- mapred-site.xml
                     - 目录下的文件为临时文件,先复制一份
                           - cp mapred-site.xml.template mapred-site.xml
                     -  mapreduce.framework.name
                         yarn 
                     -  配置mapreduce的运行平台(还可以跑在其他资源调度平台上)

- slaves:配置secondarynodename
                      - 配置为本机名

5. 配置环境变量: vi  ~/etc/profile
               - export HADOOP_HOME=/usr/local/hadoop
                 export PATH=P A T H : PATH:PATH:JAVA_HOME/bin:H A D O O P H O M E / b i n : HADOOP_HOME/bin:HADOOPHOME/bin:HADOOP_HOME/sbin:
               - 让环境变量生效:source ~/etc/profile
               - 验证:hadoop version

6. 配置完成后,进行格式化
             - hadoop namenode -format
             - 或hdfs namenode -format

7. 启动
            - start-all.sh:已经过时,建议使用以下命令:start-dfs.sh 或 start-yarn.sh
            - 验证:jps查看java进程
                   - 启动6个进程ResourceManager、NodeManager、SecondaryNameNode、NameNode、DataNode、Jps
                   - mapreduce只有启动相应运算才会启动
           - 验证:通过网页验证
                   - hdfs验证:http://主机名(或ip地址):50070
                   - yarn验证:http://主机名(或ip地址):8088

(二)完全分布式
        0. 搭建准备:按照上面搭建准备的步骤,对每个节点做所有操作
        1. 集群搭建:先在一个节点上执行所有操作,再远程发送到其他节点
          (1)选择安装版本、上传安装包、解压,
          (2)修改环境变量:
          (3)修改配置文件(6个):
                 - 集群规划(假设3台节点机器):注意secondary不能和namenode同一个节点(热备份的功能)
                     hdfs(主节点)    hdfs(从节点)    hdfs(secondarynode)     yarn(主节点)          yarn(从节点)
     hadoop1    namenode         datanode                                                                             nodemanager
     hadoop2                              datanode        secondarynode                                             nodemanager
     hadoop3                              datanode                                              resouremanager     nodemanager
    
         (4)远程发送:
                  - scp -r  本机要发送的文件  要发送到的主机名:$PWD
         (5)格式化:必须在namenode的节点(hdfs主节点)
         (6)启动:
                 - 先启动hdfs,可以在任意节点启动(start-dfs.sh)
                         - jps命令察看的时候,各节点启动的进程应该和集群规划一致
                - 启动yarn,要在yarn的主节点进行(start-yarn.sh)

三、集群搭建可能遇到的问题与解决方法
     1. 主机名的问题:
         (1)主机找不到
                 - 先检查这两个配置文件:/etc/sysconfig/network、 /etc/hosts   
     2. 格式化时候报错 
           - 最常见的是配置文件错误,根据错误提示到相应文件调整,并重新格式化
     3. 某些进程启动不了
         (1)措施一:将整个集群先关闭,再重新启动。
                - 在yarn的主节点执行stop-yarn.sh,在任意节点执行stop-dfs.sh
                - dfs可以在任何节点执行启动和关闭,yarn必须在主节点执行
         (2)措施二:单独启动某些没有启动的进程 
                - 运行sbin目录下hadoop-daemon.sh start datanode (namenode secondarynamenode)
                - 运行sbin目录下yarn-daemon.sh  start  nodemanager (resourcemanager)

作业部分(要求1最终部署时,要将这些数据写到第一题的HDFS中)

上传json交件

hadoop大文本测试用例_hadoop大文本测试用例

查看是否成功

hadoop大文本测试用例_hadoop大文本测试用例_02

部署成功

hadoop大文本测试用例_hdfs_03

 具体内容

hadoop大文本测试用例_主机名_04