Hadoop环境搭建(一)(单机伪分布式)

  1. 生成ssh秘钥(免密登陆)

    cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
    ssh-keygen -t rsa              # 会有提示,都按回车就可以
    cat ./id_rsa.pub >> ./authorized_keys  # 加入授权
    # 公钥私钥放入三个服务器的/root/.ssh文件夹执行  cat ./id_rsa.pub >> ./authorized_keys
    
  2. 服务器配置

    hostname ip
    hadoop1 192.168.2.103
    hadoop2 192.168.2.108
    hadoop3 192.168.2.109
  3. 配置每个节点的hosts文件

    vi /etc/host
    
    192.168.2.104 hadoop1
    192.168.2.108 hadoop2
    192.168.2.109 hadoop3
    
  4. 拉取安装包解压并且找到执行文件查看版本(提前配置jdk)

    wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
    cd hadoop-3.1.3/bin
    ./hadoop  version
    
  5. 伪分布式部署:

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

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

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

      cd /root/hadoop
      mkdir ./input
      cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
      ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
      cat ./output/*          # 查看运行结果
      
  6. 伪分布式部署:

    1. Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
    2. Hadoop 的配置文件位于 ${HADOOP_HOME}/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
    3. 修改配置文件 core-site.xml (通过 vim编辑会比较方便: vim ./etc/hadoop/core-site.xml),将当中的
    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <! -- 临时文件地址 -->
            <value>file:${HADOOP_HOME}/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>	
    
  7. 配置好后执行 NameNode 的格式化:

    cd ${HADOOP_HOME}
    ./bin/hdfs namenode -format
    
  8. 增加环境变量使root启动

    # 启动报错
    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 [hadoop1]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    #/etc/profile 中添加变量
    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_JOURNALNODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    
  9. 配置hadoop中的JAVA_HOME

    #报错
    hadoop1: ERROR: JAVA_HOME is not set and could not be found.
    #修改文件
    vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=xxx
    
  10. 启动

    sh {HADOOP_HOM}/sbin/start-dfs.sh
    #jps出现以下进程代表启动成功
    3153 DataNode
    3364 SecondaryNameNode
    2983 NameNode
    sh {HADOOP_HOME}/sbin/start-yarn.sh
    sh {HADOOP_HOME}/sbin/mr-jobhistory-daemon.sh start historyserver
    
  11. 关闭

    sh {HADOOP_HOME}/sbin/start-dfs.sh
    sh {HADOOP_HOME}/sbin/start-yarn.sh
    sh {HADOOP_HOME}/sbin/mr-jobhistory-daemon.sh start historyserver
    
posted @ 2024-11-25 17:34  coderliu_cn  阅读(42)  评论(0)    收藏  举报