hadoop3.1.0集群搭建

Posted SUIB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop3.1.0集群搭建相关的知识,希望对你有一定的参考价值。

一.环境配置

  jdk1.8

  centos7

二.环境搭建

  1.安装jdk

    这个不用怎么说了吧,可以直接yum安装或者自己下载tar包。yum安装不用配置javahome,但是需要知道javahome位置,因为hadoop是java项目,运行需要jdk环境。通过yum安装查找javahome如下:

$whereis javac
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz

    可以看出结果是两个目录  用ll命令查看这两个目录详情

$ll /usr/bin/javac
lrwxrwxrwx. 1 root root 23 8月   7 14:03 /usr/bin/javac -> /etc/alternatives/javac

    这个是个软连接 指向/etc/alternatives/javac 继续对这个目录ll直至不在出现软连接为止

$ll /etc/alternatives/javac
lrwxrwxrwx. 1 root root 70 8月   7 14:03 /etc/alternatives/javac -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac

  $ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac  
  -rwxr-xr-x. 1 root root 7424 7月 24 00:34 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac

 

  $ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
  总用量 50780
  drwxr-xr-x. 2 root root 4096 8月 7 14:03 bin
  drwxr-xr-x. 10 root root 134 8月 7 14:03 demo
  drwxr-xr-x. 3 root root 132 8月 7 14:03 include
  drwxr-xr-x. 4 root root 28 8月 7 14:03 jre
  drwxr-xr-x. 3 root root 144 8月 7 14:03 lib
  drwxr-xr-x. 11 root root 162 8月 7 14:03 sample
  -rw-r--r--. 1 root root 51993150 7月 23 23:59 src.zip
  drwxr-xr-x. 2 root root 204 8月 7 14:03 tapset

    看出来这个文件夹就是jdk的安装路径了。

 

  2 centos7 linux用户之间免登陆

     a)分别在机器上创建相同的用户,设置密码

     b)在a机器上运行ssh-keygen命令生成公钥私钥

      

     c)将a中的公钥id_dsa.pub烤到b机器上,并查看是否有authorized_keys这个文件,如果有追加id_dsa.pub内容在authorized_keys文件中,没有则创建,并将它的权限修改为600(chmod 600 authorized_keys)

     d)b中ssh测试是否能,免密连接

     a连b亦是同理

   3.安装hadoop 

     前置准备 三台机器ip,主机名分别为

      

     将三台机器/etc/hosts都修改为这种,ip主机名根据实际而定

 

     a) 下载网站,选择合适的版本  http://mirror.bit.edu.cn/apache/hadoop/common/

      

      b)下载好以后解压 tar -zxvf 安装包

      c)配置 core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 这四个文件hadoop安装包 etc/hadoop/目录下

        core文件主要用于配置namenode地址和tmp文件地址

$ vim etc/hadoop/core-site.xml

<configuration>

    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/workhome/hadoop-3.1.0/data/tmp</value>
    </property>

</configuration>

 hdfs用于设置namenode datanode,hdfs备份份数 默认是3 

dfs.permissionsdfs权限是否打开 ,通过idea远程操作的时候提示没有权限访问不了 因此设置为false 默认值是true

$ vim etc/hadoop/hdfs-site.xml

<
configuration> <property> <name>dfs.name.dir</name> <value>/workhome/hadoop-3.1.0/hdfs/name</value> <description>namenode上存储hdfs名字空间元数据 </description> </property> <property> <name>dfs.data.dir</name> <value>/workhome/hadoop-3.1.0/hdfs/data</value> <description>datanode上数据块的物理存储位置</description> </property> <!-- 设置hdfs副本数量 --> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>

mapred设置mapreduce


$ vim etc/hadoop/mapred-site.xml 

<
configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> <property> <name>mapred.job.tracker</name> <value>http://master:9001</value> </property> </configuration>

$ vim etc/hadoop/yarn-site.xml 

<
configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>

 

修改 etc/hadoop/hadoop-env.sh 添加java安装路径

$ vim etc/hadoop/hadoop-env.sh 
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64

配置hadoop环境变量

$  vim /etc/profile
export HADOOP_HOME=/workhome/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin

 

  然后将master这个hadoop完整的复制到其他机器即可

  最后在master etc/hadoop下新增workers 将slave机器添加进去 ,以后要是扩展节点 也应该添加到这个里面

 

  e)初始化:

    hadoop namenode -format

  f) 启动

    只需启动master的  

    hadoop安装路径/sbin/start-all.sh

    查看:jps命令 用来查看启动了的java服务

    master 

    

    slave1

    

    slave2

    

 

    只需查看到master上有namenode slave上有datanode就代表成功。

    g)关闭 /sbin/stop-all.sh脚本 

 

 

 四.遇到的问题以及解决方案

   扩展一台机器,重启服务没有datanode

    解决方案:清除 core-site.xml中配置的tmp文件夹  以及hdfs-site.xml中配置的datanode和namenode的文件夹  重新格式化namenode

以上是关于hadoop3.1.0集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop集群搭建

Hadoop3.1.0 HA(hdfs+yarn) 集群模式-下

hadoop安装,启动二级namenode、nodemanagers和resource manager

Hadoop 3.x 新特性剖析系列

源代码搭建应用——动手搭建自己的计算集群系统

集群部署看过来,低代码@AWS智能集群的架构与搭建方案