• Hadoop分布式模式配置


    hadoop环境准备:

    hadoop下载地址:http://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

    hadoop集群的安装配置大致分为以下六个步骤:

    1. 选定一台机器作为master

    2. 在master节点上创建hadoop用户、安装ssh服务端、配置jdk环境

    3. 在master节点上安装hadoop,完成配置

    4. 在其他Slave节点上创建hadoop用户安装ssh服务端、配置jdk环境

    5. 将master节点上的/usr/local/hadoop目录复制到其他Slave节点上

    6. 在master节点上开启hadoop

    2.1创建hadoop用户:

    1. sudo useradd -m hadoop -s /bin/bash
    2. #设置密码
    3. sudo passwd hadoop
    4. #增加管理员权限
    5. sudo adduser hadoop sudo

    2.2ssh无密码登陆节点

    1. cd ~/.ssh
    2. #生成公钥和私钥
    3. ssh-keygen -t rsa
    4. #放到authorized_key中
    5. cat ./id_rsa.pub>>./authorized_keys
    6. #更改本地hosts
    7. vim /etc/hosts
    8. #将公钥传到slavel机器
    9. scp ~/.ssh/id_rsa.pub hadoop@Slavel:/home/hadoop
    10. #将传过来的公钥继续追加写入到authorized_keys
    11. cat ~/id_rsa.pub>>~/.ssh/authorized_keys

    2.3配置jdk

    1. vim ~/.bashrc
    2. #修改之后保存,刷新
    3. source ~/.bashrc

    在末尾添加环境变量

    1. export JAVA_HOME=/tools/JDK/jdk1.8.0_371
    2. export JRE_HOME=${JAVA_HOME}/jre
    3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    4. export PATH=${JAVA_HOME}/bin:$PATH

    3、配置集群/分布式环境

    1. #下载完之后解压hadoop移动到/usr/local目录中
    2. mv ./hadoop /usr/local
    3. #给当前hadoop用户添加一个用户组,以至于有权限访问hadoop文件
    4. chown +R hadoop /usr/local/hadoop

    在配置集群需要修改/usr/local/hadoop/etc/hadoop目录下的workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml五个文件(这里仅设置正常启动所必需的设置项)

    3.1修改workers文件

    本机是master,在master中添加一行

    Slaver

    3.2修改core-site.xml文件

    1. <configuration>
    2. <property>
    3. <name>hadoop.tmp.dir</name>
    4. <value>file:/usr/local/hadoop/tmp</value>
    5. <description>Abase for other temporary directories.</description>
    6. </property>
    7. <property>
    8. <name>fs.defaultFS</name>
    9. <value>hdfs://Master:9000</value>
    10. </property>
    11. </configuration>

    3.3修改hdfs-site.xml文件

    1. <configuration>
    2. <property>
    3. <name>dfs.namenode.secondary.http-address</name>
    4. <value>Master:50090</value>
    5. </property>
    6. <property>
    7. <name>dfs.replication</name>
    8. <value>1</value>
    9. </property>
    10. <property>
    11. <name>dfs.namenode.name.dir</name>
    12. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    13. </property>
    14. <property>
    15. <name>dfs.datanode.data.dir</name>
    16. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    17. </property>
    18. </configuration>

    3.4修改mapred-site.xml文件

    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.name</name>
    4. <value>yarn</value>
    5. </property>
    6. <property>
    7. <name>mapreduce.jobhistory.address</name>
    8. <value>Master:10020</value>
    9. </property>
    10. <property>
    11. <name>mapreduce.jobhistory.webapp.address</name>
    12. <value>Master:19888</value>
    13. </property>
    14. <property>
    15. <name>yarn.app.mapreduce.am.env</name>
    16. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    17. </property>
    18. <property>
    19. <name>mapreduce.map.env</name>
    20. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    21. </property>
    22. <property>
    23. <name>mapreduce.reduce.env</name>
    24. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    25. </property>
    26. </configuration>

    3.5修改yarn-site.xml文件

    1. <property>
    2. <name>yarn.resourcemanager.hostname</name>
    3. <value>Master</value>
    4. </property>
    5. <property>
    6. <name>yarn.nodemanager.aux-services</name>
    7. <value>mapreduce_shuffle</value>
    8. </property>

    将以上文件都修改完之后需要把master节点上的hadoop文件复制到各个节点上去

    首先在master上执行如下命令:

    1. cd /usr/local
    2. sudo rm -r ./hadoop/tmp ./hadoop/logs/*
    3. tar -zcf ~/hadoop.master.tar.gz ./hadoop
    4. cd ~
    5. scp ./hadoop.master.tar.gz Slavel:/home/hadoop

    然后在slavel节点上执行如下命令:

    1. sudo rm -r /usr/local/hadoop
    2. sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
    3. sudo chown -R hadoop /usr/local/hadoop

    slavel执行完成之后回到master上来

    第一次启动hadoop集群时,须先在master节点上执行名称节点的格式化

    hdfs namenode -format

    启动hadoop,须在master上进行(这里我配置了hadoop的环境变量的)

    1. start-dfs.sh
    2. start-yarn.sh
    3. mr-jobhistory-daemon.sh start historyserver

    hadoop配置环境变量

    vim ~/.bashrc
    
    export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

    jps命令可查看各个节点启动的进程,如正确启动,则在master节点杀死嗯有NameNode、ResourceManager、SecondaryNameNode和JobHistoryServer进程

    缺少任意一进程都表示出错

    执行分布式实例

    1. hdfs dfs -mkdir -p /user/hadoop
    2. #其次在hdfs中创建一个input目录,并把/usr/local/hadoop/etc/hadoop目录中的配置文件作为输入文件复制到input目录中
    3. hdfs dfs -mkdir input
    4. hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

    运行MapReduce作业

    hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

    查看结果

    ./bin/hdfs dfs -cat output/*

    可能遇到的问题:

    在master拷贝的hadoop到节点机器上因为hadoop里面配置的jdk的路径是master机器上的,所以要在/usr/local/hadoop/etc/hadoop/hadoop-env.sh

    将jdk路径改成自己的

  • 相关阅读:
    参加微软学生开发者峰会,了解Azure和GitHub……
    Vue 源码解读(10)—— 编译器 之 生成渲染函数
    Android中drawable和mipmap到底有什么区别
    hadoop之yarn
    基于Qlearning强化学习的倒立摆控制系统matlab仿真
    基于Javaweb的护肤品推荐系统 /基于ssm的护肤品销售系统
    Conda 环境迁移
    音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)
    小白免费编程学习网站
    Be Your Own Teacher 论文阅读
  • 原文地址:https://blog.csdn.net/weixin_54227009/article/details/132787265