Hadoop三节点集群搭建

布满荆棘的人生 2023-06-13 15:26 28阅读 0赞

接上一篇:Centos7上配置jdk等

免密登录

  1. 3个节点分别执行以下命令,获取密钥
  2. ssh-keygen -t rsa
  3. node001节点上做示范,以下的命令需要在所有节点上执行一遍
  4. ssh-copy-id -i node002
  5. ssh-copy-id -i node003
  6. #将生成的公钥添加到认证文件中,其中.shh是隐藏的,需要在~下执行命令:ls -a才可以看到
  7. cd ~/.ssh
  8. cat id_rsa.pub >> authorized_keys

安装Hadoop

1 创建Hadoop用户组和hadoop用户

创建hadoop用户组和Hadoop用户需要在三台机器上分别执行

  1. #1创建用户组hadoop
  2. [root@node001 ~]# groupadd hadoop
  3. #2创建用户hadoop并添加到hadoop用户组中
  4. [root@node001 ~]# useradd -g hadoop hadoop
  5. #3使用id命令查看hadoop用户组和hadoop用户是否创建成功
  6. [root@node001 ~]# id hadoop
  7. uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
  8. #4设置hadoop用户密码为hadoop
  9. [root@node001 ~]# passwd hadoop
  10. #5将/home/hadoop的目录所有者改为hadoop用户组的hadoop用户,并赋予一定的权限
  11. [root@node001 ~]# chown -R hadoop:hadoop /home/hadoop
  12. [root@node001 ~]# chmod -R 755 /home/hadoop

对hadoop用户做免密登录,配置参考root用户的方式,在三个节点上分别执行以下命令

  1. [root@node001 ~]# su - hadoop
  2. [hadoop@node001 ~]$ ssh-keygen -t rsa
  3. #修改.ssh目录权限
  4. drwx------ 2 hadoop hadoop 38 Nov 30 19:17 .ssh
  5. [hadoop@node001 ~]$ chmod -R 755 .ssh/
  6. [hadoop@node001 ~]$ cd .ssh/
  7. [hadoop@node001 .ssh]$ chmod 644 *
  8. [hadoop@node001 .ssh]$ chmod 600 id_rsa
  9. [hadoop@node001 .ssh]$ chmod 600 id_rsa.pub
  10. node001节点上做示范,以下的命令需要在所有节点上执行一遍
  11. ssh-copy-id -i node002
  12. ssh-copy-id -i node003

2 上传hadoop安装包(可自行搜索上传方法),进行解压

首先都切换到root用户下

  1. #创建hadoop安装目录
  2. [root@node001 ~]# mkdir -p /opt/bigData
  3. #解压hadoop压缩包
  4. [root@node001 bigData]# tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/bigData/

3 配置hadoop环境变量

  1. [root@node001 ~]# vim .bash_profile
  2. JAVA_HOME=/opt/software/jdk1.8.0_231
  3. HADOOP_HOME=/opt/bigData/hadoop-3.1.3
  4. PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  5. export JAVA_HOME
  6. export HADOOP_HOME
  7. export PATH
  8. [root@node001 ~]# source .bash_profile
  9. [root@node001 ~]# hadoop version
  10. #把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
  11. [root@node001 ~]# cp .bash_profile /home/hadoop
  12. [root@node001 ~]# su - hadoop
  13. [hadoop@node001 ~]$ source .bash_profile
  14. [hadoop@node001 ~]$ hadoop version

4 修改hadoop安装目录权限

node001、node002、node003都做如下操作

  1. #修改目录所属用户和组为hadoop:hadoop
  2. [root@node001 /]# chown -R hadoop:hadoop /opt
  3. #修改目录所属用户和组的权限值
  4. [root@node001 /]# chmod -R 755 /opt
  5. [root@node001 /]# chmod -R g+w /opt
  6. [root@node001 /]# chmod -R o+w /opt

配置文件

进入到指定目录下

  1. /opt/bigData/hadoop-3.1.3/etc/hadoop/

1 core-site.xml

  1. <configuration>
  2. <!-- 指定hdfs的namenode主机的hostname-->
  3. <property>
  4. <name>fs.defaultFS</name>
  5. <value>hdfs://node001:9000</value>
  6. </property>
  7. <!-- I/O操作流的配置-->
  8. <property>
  9. <name>io.file.buffer.size</name>
  10. <value>131072</value>
  11. </property>
  12. <!--hadoop集群临时数据存储目录 -->
  13. <property>
  14. <name>hadoop.tmp.dir</name>
  15. <value>/opt/bigData/hadoop-3.1.3/tmpdata</value>
  16. </property>
  17. </configuration>

2 hadoop-env.sh

  1. export JAVA_HOME=/opt/bigData/jdk1.8

3 hdfs-site.xml

  1. <configuration>
  2. <!-- 工作节点的数据块存储目录-->
  3. <property>
  4. <name>dfs.namenode.name.dir</name>
  5. <value>/opt/bigData/hadoop-3.1.3/hdfs/name/</value>
  6. </property>
  7. <!-- 指定block块的大小-->
  8. <property>
  9. <name>dfs.blocksize</name>
  10. <value>268435456</value>
  11. </property>
  12. <!-- -->
  13. <property>
  14. <name>dfs.namenode.handler.count</name>
  15. <value>100</value>
  16. </property>
  17. <!-- 工作节点的数据块存储目录-->
  18. <property>
  19. <name>dfs.datanode.data.dir</name>
  20. <value>/opt/bigData/hadoop-3.1.3/hdfs/data/</value>
  21. </property>
  22. <!-- block的副本数-->
  23. <property>
  24. <name>dfs.replication</name>
  25. <value>3</value>
  26. </property>
  27. </configuration>

4 mapred-site.xml

  1. <configuration>
  2. <!-- 指定运行mapreduce的环境是yarn-->
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>yarn</value>
  6. </property>
  7. <property>
  8. <name>yarn.app.mapreduce.am.env</name>
  9. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  10. </property>
  11. <property>
  12. <name>mapreduce.map.env</name>
  13. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  14. </property>
  15. <property>
  16. <name>mapreduce.reduce.env</name>
  17. <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  18. </property>
  19. <property>
  20. <name>mapreduce.application.classpath</name>
  21. <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
  22. </property>
  23. </configuration>

5 yarn-site.xml

  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <!--指定resourcemanager的位置-->
  4. <property>
  5. <name>yarn.resourcemanager.hostname</name>
  6. <value>node001</value>
  7. </property>
  8. <!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序-->
  9. <property>
  10. <name>yarn.nodemanager.aux-services</name>
  11. <value>mapreduce_shuffle</value>
  12. </property>
  13. <property>
  14. <name>yarn.resourcemanager.address</name>
  15. <value>node001:18040</value>
  16. </property>
  17. <property>
  18. <name>yarn.resourcemanager.scheduler.address</name>
  19. <value>node001:18030</value>
  20. </property>
  21. <property>
  22. <name>yarn.resourcemanager.resource-tracker.address</name>
  23. <value>node001:18025</value>
  24. </property>
  25. <property>
  26. <name>yarn.resourcemanager.admin.address</name>
  27. <value>node001:18141</value>
  28. </property>
  29. <property>
  30. <name>yarn.resourcemanager.webapp.address</name>
  31. <value>node001:18088</value>
  32. </property>
  33. </configuration>

配置datanode列表

1、在node001上做如下配置

  1. vim workers(这个文件在/opt/bigData/hadoop-3.1.3/etc/hadoop目录下,此文件用于配置集群有多少个数据节点,
  2. 我们把node002node003作为数据节点,node001集群管理节点)
  3. node002
  4. node003

2、把node001上配置好的hadoop分发到其他的节点

  1. for i in { 2..3};do scp -r /opt/bigData/hadoop-3.1.3/ node00$i:/opt/bigData/; done

3、远程复制.bash_profile

  1. scp .bash_profile root@node002:~
  2. scp .bash_profile root@node003:~

使其分别生效

  1. source .bash_profile
  2. #把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
  3. [root@node001 ~]# cp .bash_profile /home/hadoop
  4. [root@node001 ~]# su - hadoop
  5. [hadoop@node001 ~]$ source .bash_profile
  6. [hadoop@node001 ~]$ hadoop version

4、在namenode中格式化文件系统(在一个节点上执行即可)

  1. [root@node001 /]# su - hadoop
  2. [hadoop@node001 ~]# hdfs namenode -format

5、开启分布式文件系统(/opt/bigData/hadoop/sbin)
发送键盘输入的所有会话

  1. ./start-all.sh

如果报异常:

  1. node001: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

则执行如下命令(三个节点都要执行):

  1. [hadoop@node001 ~]$ cd .ssh/
  2. [hadoop@node001 .ssh]$ cat id_rsa.pub >> authorized_keys

然后执行下面的命令查看

  1. jps

出现如下,则成功
在这里插入图片描述
最后通过浏览器访问:
http://node001:9870/

运行mapreduce程序

  1. #1.使用hdfs dfs -ls / 命令浏览hdfs文件系统
  2. [hadoop@node001 ~]$ hdfs dfs -ls /
  3. #2.创建测试目录
  4. [hadoop@node001 ~]$ hdfs dfs -mkdir /test
  5. #3.在此使用hdfs dfs -ls / 发现我们刚才创建的test目录
  6. [hadoop@node001~]$ hdfs dfs -ls /
  7. Found 1 items
  8. drwxr-xr-x - hadoop supergroup 0 2019-12-05 17:24 /test
  9. #4.使用touch命令在linux本地目录创建一个words文件
  10. [hadoop@node001 ~]$ touch words
  11. #5.文件中输入如下内容
  12. [hadoop@node001 ~]$ vim words
  13. i love you
  14. are you ok
  15. #6.将创建的本地words文件上传到hdfs的test目录下
  16. [hadoop@node001 ~]$ hdfs dfs -put words /test
  17. #7.查看上传的文件是否成功
  18. [hadoop@node001 ~]$ hdfs dfs -ls -r /test
  19. #8./test/words是hdfs上的文件存储路径 /test/output是mapreduce程序的输出路径,这个输出路径
  20. 是不能已经存在的路径,mapreduce程序运行的过程中会自动创建输出路径,数据路径存在的话
  21. 会报错,这里需要注意下
  22. #9.使用hadoop自带的例子
  23. [hadoop@node002 mapreduce]$ hadoop jar /opt/bigData/hadoop/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /test/words /test/output

" class="reference-link">欢迎关注我的微信公众号,不定期更新文章和大家一起学习共勉在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,28人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hadoop

    Hadoop集群搭建 最近终于忙完了所以把hadoop简单集群的搭建也弄处来给大家参考,这个教程仅仅提供一个最简单的单纯的hadoop集群环境搭建并没有涉及到更多组建搭建

    相关 Hadoop

            前言:搭建hadoop集群的博文很多,不能总是每次搭建时都花时间搜索一篇适合自己机器、文章简练清晰的教程,笔者也是描述自己搭建Hadoop集群的详细过程,以备日