1、下载虚拟机进程显示程序
因为之前sdkman下载的jdk不能显示进程,所以要更换jdk
进入yum源,用命令下载(此处的cloudera下载连接是老师的)
wget -c http://192.168.10.120/tools/jdk/cloudera-manager.repo
2、清除缓存
yum clean all
3、重新制作缓存
yum makecache
查看已安装的jdk
yum list installed |grep java
卸载它
yum -y remove java-1.8.0-openjdk.x86_64
查看可安装的cloudera
yum list |grep cloudera
安装cloudera
查看是否安装成功,安装成功
修改/root/.bashrc 文件,添加Java路径
export JAVA_HOME=/usr/java/jdk1.8.0_232-cloudera/
export PATH=$PATH:$JAVA_HOME/bin
激活刚刚的设置
source ~/.bashrc
查看当前进程,设置成功
2、yarn配置
在/root/server/hadoop-3.2.3/etc/hadoop/yarn-site.xml中<configuration>里添加以下代码
<!--指定resourcemanager 位置节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>qwd</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>qwd:8088</value>
</property>
<!-- 启动historyserver 服务 只对mr 有效-->
<property>
<name>yarn.log.server.url</name>
<value>http://qwd:19888/jobhistory/logs</value>
</property>
<!-- 每个nodemanager 节点可用可供集群使用的内存,单位MB 1-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<!-- 每个nodemanager节点 可提供的虚拟CPU个数(线程数,并发数)-->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<!-- 是否启动一个线程 检查任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程 检查任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!-- yarn 分配资源 最少内存,默认1024MB RAM-per-container-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<!-- yarn 分配资源 最小线程数,默认是1-->
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<!-- yarn 分配资源 最大内存,默认8192MB-->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn 分配资源 最大线程数,默认是32-->
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>4</value>
</property>
<!--nodemanager 节点间数据传输方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- nodemanager 中间结果存放位-->
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/yarn/local</value>
</property>
<!-- nodemanager 日志存放地址-->
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/root/dfs/yarn/logs</value>
</property>
3、mapreduce 资源配置
在/root/server/hadoop-3.2.3/etc/hadoop/mapred-site.xml中<configuration>里添加以下代码
<!-- 执行mapreduce 任务所使用的资源框架,默认为local 集群用yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>local</value>
</property>
<!-- mapreduce 计算记录-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>qwd:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>qwd:19888</value>
</property>
<!-- 主任务进程 申请的内存量-->
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>2048</value>
<discription>2 * 任务子进程资源</discription>
</property>
<!-- 任务主进程 申请的内存量中用于业务数据的内存(比例0.75 其余是jvm自身的开销)-->
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx1500m</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.cpu-vcores </name>
<value>2</value>
<discription>2 * 任务子进程资源</discription>
</property>
<!-- mapreduce 任务主进程 最大失败尝试次数-->
<property>
<name>mapreduce.am.max-attempts</name>
<value>3</value>
</property>
<!-- mapreduce(map) 任务子进程 申请的线程数量-->
<property>
<name>mapreduce.map.cpu.vcores</name>
<value>1</value>
</property>
<!-- mapreduce (map) 任务子进程 申请的内存-->
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<!-- mapreduce(map) 任务子进程 申请的内存 用于业务的内存数量-->
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx750m</value>
</property>
<property>
<name>mapreduce.map.maxattempts</name>
<value>3</value>
<discription>表示 Reduce Task 最大失败尝试次数,这个配置默认是4 </discription>
</property>
<!-- mapreduce(reduce) 任务子进程 申请的线程数量-->
<property>
<name>mapreduce.reduce.cpu.vcores</name>
<value>1</value>
</property>
<!-- mapreduce(reduce) 任务子进程 申请的内存-->
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
</property>
<!-- mapreduce(reduce) 任务子进程 申请的内存 用于业务的内存数量-->
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx750m</value>
</property>
<property>
<name>mapreduce.reduce.maxattempts</name>
<value>3</value>
<discription>表示 Reduce Task 最大失败尝试次数,这个配置默认是4</discription>
</property>
<property>
<name>mapreduce.reduce.shuffle.memory.limit.percent</name>
<value>0.3</value>
<discription>单个 shuffle 消耗的内存占reduce 所有内存的比例,默认值为0.25</discription>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>150</value>
<discription>mr 中间数据的缓存大小,占用map申请的资源</discription>
</property>
<property>
<name>mapreduce.task.io.sort.spill.percent</name>
<value>0.8</value>
<discription>中间数据缓存达到比例写磁盘</discription>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>false</value>
<discription>中间数据写磁盘时是否压缩</discription>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>hdfs:///hadoop/mr_history/done_intermediate</value>
<discription>mr 正在运行 的日志存放位置hdfs</discription>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>hdfs:///hadoop/mr_history/done</value>
<discription>mr 运行过的日志存放位置hdfs</discription>
</property>
<property>
<name>mapreduce.job.reduce.slowstart.completedmaps</name>
<value>0.4</value>
<discription>map task 完成一定比例启动 reduce</discription>
</property>
<property>
<name>yarn.app.mapreduce.am.job.reduce.rampup.limit</name>
<value>0.5</value>
<discription>maptask 完成之前,最多启动 reduce 比例</discription>
</property>
<property>
<name>yarn.app.mapreduce.am.job.reduce.preemption.limit</name>
<value>0.4</value>
<discription>map 暂时无法获取资源,最多可以抢占reduce比例</discription>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>5</value>
<discription>map 全部完成,有 map输出最大文件数</discription>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>5</value>
<discription>reduce 同时取 N 个 map 输出数据</discription>
</property>
4、启动yarn
yarn --daemon start resourcemanager
yarn --workers --daemon start nodemanager
mapred --daemon start historyserver
可以加上昨天hdfs的启动命令,启动之后用jps查看进程,出现如上情况则启动成功
5、尝试计算圆周率
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.3.jar pi 1000 1000
经过漫长的等待之后……出现如下结果
出现异常:org.apache.hadoop.ipc.RenoteException(java.io.IOException
出现原因:修改core-site.xml后没有清空缓存就格式化了,造成spaceID不一致
解决方法:先清空缓存,再格式化。具体方法见上一章