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"+值,便于调试);
2.HDFS 2.1 pomorg.apache.logging.log4j log4j-slf4j-impl2.12.0
org.apache.hadoop hadoop-client-api3.1.3 org.apache.hadoop hadoop-client-runtime3.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 页面的权限
3.2参数优化hadoop.http.staticuser.user hx dfs.permissions.enabled false
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》购物车)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)