栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hadoop使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop使用

1.常用命令

1.namenode格式化:hdfs namenode -format

2.启动历史服务器:mapred --daemon start historyserver 或者mr-jobhistory-daemon.sh stop historyserver

3.IDEA提交集群

需要先打包,再设置打包的路径

VM: -DHADOOP_USER_NAME=hx

Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop102:8020");
conf.set("mapreduce.framework.name","yarn");
conf.set("mapreduce.app-submission.cross-platform","true");
conf.set("yarn.resourcemanager.hostname","hadoop103");

4.日志

private Logger log = LoggerFactory.getLogger(KnnMapper.class);
log.info("badrecord"+值,便于调试);


            org.apache.logging.log4j
            log4j-slf4j-impl
            2.12.0

2.HDFS 2.1 pom

     org.apache.hadoop
     hadoop-client-api
     3.1.3


     org.apache.hadoop
     hadoop-client-runtime
     3.1.3

2.2 hdfs客户端API

FileSystem fs = null ;
    @Before
    public void before() throws IOException, InterruptedException {
        Configuration conf = new Configuration();
        //conf.set("dfs.blocksize","25m");
        fs= FileSystem.get(URI.create("hdfs://hadoop102:8020"),conf, "hx");
    }
    @After
    public  void after() throws IOException {
        fs.close();
    }
    //上传功能
    @Test
    public void testPut() throws IOException {
        fs.copyFromLocalFile(new Path("e:/input/test.csv"),
                new Path("/digit_data/"));
    }
	//下载功能
    @Test
    public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException {

        // 2 执行下载操作
        // boolean delSrc 指是否将原文件删除
        // Path src 指要下载的文件路径
        // Path dst 指将文件下载到的路径
        // boolean useRawLocalFileSystem 是否开启文件校验
        fs.copyToLocalFile(false, new Path("/digit_data/output/part-r-00000"), new Path("e:/output.txt"), true);
    }
3.配置 3.1配置hadoop3 hdfs 页面的权限

  hadoop.http.staticuser.user
  hx




  dfs.permissions.enabled
  false
3.2参数优化

1 HDFS参数调优hdfs-site.xml

dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群规模为8台时,此参数设置为60

2 YARN参数调优yarn-site.xml(默认)

一个nodemanager 内存大小:8G

yarn.nodemanager.resource.memory-mb

单个任务可申请的最多物理内存量,默认是8192(MB)

根据输入数据的大小128M对应1G 。例如:2G输入数据,会启动16个maptask 所以 需要16G

yarn.scheduler.maximum-allocation-mb

maptask: 1G

reducetask: 1G

4 MapReduce 4.1 shuffle及优化

定义:map方法之后,reduce方法之前,混洗过程

map阶段:调用getpartition标记数据是哪个分区的,放入环形缓冲区(默认100M,生产环境可以调整为200M),一半为数据,一半为索引,达到80%时(生产情况下可以调高),对索引进行快排,溢写成文件。(combiner、压缩)文件归并排序到磁盘。

reduce阶段:拉取对应分区的数据放入内存(默认一次拉取5个map的数据)(调整内存),溢写磁盘,归并排序,分组进入reduce方法。

优化:上面加括号的地方以及上面参数优化。

4.2 哪些地方可以压缩:

map的输入端:支持切片的压缩方式:bzip2、lzo(额外建索引,生产环境选择)

map的输出端:要求速度快:snappy、lzo

reduce的输出端:看需求 永久保存看压缩比

5.Yarn  5.1工作机制(笔试)

放入指定位置:jar(执行代码)、xml(按照自定义配置)、切片(maptask)

任务队列:多个任务

application master:读资料,负责资源的申请

5.2调度器

(1)FIFO、容量、公平调度器
            Apache默认调度器:容量
            CDH默认调度器:公平调度器
(2)FIFO调度器特点:
            单队列,先进先出,在企业开发中没人使用
(3)容量调度器:
           支持多队列,先进来的任务优先享有资源
(4)公平调度器
           支持多队列,每个任务公平享有资源  并发度最高。
(5)在生产环境如何选择掉调度器
            对并发度要求比较高,同时机器性能比较好,选择公平; 大公司
            如果并发度不高,机器性能比较差,选择容量: 中小公司
(6)在生产环境下队列怎么创建?
            容量调度器默认只有一个default队列;
            按照框架名称:hive、spark、flink
            按照业务名称:登录、购物车、支付模块、部门1、部门2  (居多)
            好处:解耦、降低风险、可以实现任务降级(部门1》部门2》购物车)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号