Hadoop使用

Hadoop使用,第1张

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》购物车)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5685337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存