• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    手把手教你在腾讯云上搭建hadoop3.x伪集群的方法

    一、环境准备

    CentOS Linux release 7.5.1804 (Core) 系统下

    安装

    创建文件夹

    $ cd /home/centos
    $ mkdir software
    $ mkdir module

    将安装包导入software文件夹

    $ cd software
    # 然后把文件拖进去即可

    这里使用的安装包是

    /home/centos/software/hadoop-3.1.3.tar.gz

    /home/centos/software/jdk-8u212-linux-x64.tar.gz

    $ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../module
    $ tar -zxvf hadoop-3.1.3.tar.gz -C ../module

    配置环境变量

    $ cd /etc/profile.d/
    $ vim my_env.sh

    为了不污染系统变量,我们自己创建一个环境变量的脚本,配置内容如下

    #JAVA_HOME,PATH 
    # export 提升为全局变量,如果你的路径和我不同,记得这里要使用自己的路径哦
    export JAVA_HOME=/home/centos/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    
    #HADOOP_HOME
    export HADOOP_HOME=/home/centos/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin

    然后保存退出(这里不会的话可以看下vim基础使用,不再赘述了)。

    我们source一下,使环境变量生效

    $ source /etc/profile
    

    测试一下,看看是否成功

    $ hadoop version

    $ java

    出现以上界面就是没问题了,如果还没成功可以做以下两项检查:

    ssh免密

    虽然是伪集群,但是本机连接本机的时候还是会需要密码的,所以要设置一下ssh免密

    $ ssh-keygen -t rsa
    

    出现提示就不停的按回车即可,生成完秘钥后

    $ ssh-copy-id 本机hostname
    

    配置host文件

    vi /etc/hosts
    #这里我保留的配置为,其中master配置的是腾讯云的内网, 如果配置外网会导致eclipse客户端连不上hadoop
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    172.16.0.3 master
    127.0.0.1 localhost

    修改主机名

    vi /etc/sysconfig/network 
    #修改HOSTNAME为master
    HOSTNAME=master
    

    修改hostname

    $ hostnamectl --static set-hostname master
    

    关闭防火墙

    $ systemctl disable firewalld    #永久
    

    二、配置hadoop

    配置文件

    进入hadoop的配置文件专区,所有配置文件都在这个文件夹

    $ cd /home/centos/module/hadoop-3.1.3/etc/hadoop
    

    我们要配置的文件主要有

    core-site.xml

    hdfs-site.xml

    yarn-site.xml
    mapred-site.xml
    hadoop-env.sh

    那接下来就按照步骤操作吧!

    $ vim core-site.xml

    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://腾讯云内网ip地址:9820</value>
      </property>
     
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/centos/module/hadoop-3.1.3/data/tmp</value>
      </property>
    	<!-- 通过web界面操作hdfs的权限 -->
      <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
      </property>
        <!-- 后面hive的兼容性配置 -->
      <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
      </property>
      <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
        </property>
    </configuration>

    $ vim hdfs-site.xml

    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>1</value>
      </property>
      <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>腾讯云内网ip地址:9868</value>
      </property>
    </configuration>

    $ vim hadoop-env.sh

    export JAVA_HOME=/home/centos/module/jdk1.8.0_212
    

    $ vim yarn-site.xml

    <configuration>
    
      <!-- Reducer获取数据的方式-->
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
      <!-- 指定YARN的ResourceManager的地址-->
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
      </property>
    <!-- 环境变量通过从NodeManagers的容器继承的环境属性,对于mapreduce应用程序,除了默认值 hadoop op_mapred_home应该被添加外。属性值 还有如下-->
      <property>
        <name>yarn.nodemanager.env-whitelist</name>
     <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
        <!-- 解决Yarn在执行程序遇到超出虚拟内存限制,Container被kill -->
      <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
      </property>
      <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
      </property>
        <!-- 后面hive的兼容性配置 -->
      <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
      </property>
      <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
        </property>
      
      <!-- 开启日志聚集 -->
      <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
      </property>
      <!-- 访问路径-->
      <property> 
        <name>yarn.log.server.url</name> 
        <value>http://172.17.0.13:19888/jobhistory/logs</value>
      </property>
      <!-- 保存的时间7天 -->
      <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
      </property>
    </configuration>

    配置历史服务器

    $ vim mapred-site.xml

    <!-- 历史服务器端地址 -->
    <property>
      <name>mapreduce.jobhistory.address</name>
      <value>腾讯云内网ip:10020</value>
    </property>
    
    <!-- 历史服务器web端地址 -->
    <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>腾讯云内网ip:19888</value>
    </property>

    初始化

    第一次启动需要格式化NameNode,后面就不需要啦

    $ hdfs namenode -format

    初始化后,可以看到hadoop安装文件夹中,出现了data和logs两个文件夹,这样就是初始化成功了

    接下来看下启动集群

    $ start-dfs.sh

    启动完毕,没有异常信息,查看一下进程

    [root@VM_0_13_centos hadoop]# jps
    20032 Jps
    30900 DataNode
    31355 SecondaryNameNode
    30559 NameNode
    

    全部启动成功~!

    一键启动

    上面都没问题后,可以做一个脚本一键启动集群,在bin目录下新建

    $ vim mycluster
    

    添加如下内容

    #!/bin/bash
    case $1 in
    "start")
    #dfs yarn history
    start-dfs.sh
    start-yarn.sh
    mapred --daemon start historyserver
    ;;
    "stop")
    # dfs yarn history
    stop-dfs.sh
    stop-yarn.sh
    mapred --daemon stop historyserver
    ;;
    *)
    echo "args is error! please input start or stop"
    ;;
    esac

    配置脚本的权限

    $ chmod u+x mycluster

    使用脚本启动

    $ mycluster start
    
    $ jps
    23680 NodeManager
    24129 JobHistoryServer
    22417 DataNode
    24420 Jps
    22023 NameNode
    23384 ResourceManager
    22891 SecondaryNameNode

    三、查看hdfs

    配置安全组规则

    在进行以下操作前,现在安全组规则中的协议端口中,加入以下要使用的端口

    端口号:

    hadoop web页面

    在浏览器输入:腾讯云公网地址:端口号,即可进入对应的web界面

    这是我们发现Secondary NameNode的界面显示不太正常,这是由于hadoop3中dfs-dust.js的时间函数使用有误。我们手动改正一下。

    首先关闭集群

    $ mycluster stop

    修改文件

    $ vim /home/centos/module/hadoop-3.1.3/share/hadoop/hdfs/webapps/static/dfs-dust.js

    约61行的位置,如图所示,更改为:

    return new Date(Number(v)).toLocaleString();
    

    此时我们再启动集群

    $ mycluster start

    可以看到Secondary NameNode的web界面已经正常了

    测试hdfs

    那我们来上传文件玩一玩吧

    在hadoop目录下新建一个文件夹

    $ mkdir temdatas

    进入文件夹,新建一个测试文件

    $ vim text.txt

    内容随便写吧,写好保存,我们开始上传文件

    $ hdfs dfs -put text.txt /

    查看一下web页面,上传成功了~

    再尝试把这个文件down下来

    $ hdfs dfs -get /text.txt ./text1.txt
    

    成功~
    至此hadoop集群搭建完毕,可以自己耍一些好玩的事啦~!

    WordCount案例实操

    在web端新建文件夹 input

    在其中上传一个自己写的各种单词的文件,做单词统计

    #或者自己在vim中写好上传也可
    $ hdfs dfs -put wordcount.txt /input
    

    然后测试一下wordcount案例,注意输出文件夹不能存在

    $ hadoop jar /home/centos/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
    

    运行完之后,我们看一下结果

    #拉取hdfs文件
    [root@master mydata]# hdfs dfs -get /output ./
    #查看结果
    [root@master output]# cat part-r-00000 
    a    2
    b    3
    c    2
    d    1
    e    1
    f    1

    至此,你已经可以自由的玩耍hadoop啦。

    当然,如果你已经尝试了的话,会发现,还有一个小问题没有解决,就是在web端点击文件查看head或tail时,会发生无法查看的情况,download也是不可以的。这个在虚拟机安装时并没有发生过,我还在研究怎么回事。如果有大神知道怎么回事,可以留言说一下哈

    到此这篇关于手把手教你在腾讯云上搭建hadoop3.x伪集群的方法的文章就介绍到这了,更多相关腾讯云搭建hadoop3.x伪集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:详细部署阿里云服务器全过程(图文教程)
    下一篇:手把手教你在腾讯云上搭建hive3.1.2的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    手把手教你在腾讯云上搭建hadoop3.x伪集群的方法 手把手,教,你在,腾讯,云,