https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
使用普通账号,上传到/opt/software目录
使用普通账号
[hadoop@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
[hadoop@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh
新增内容:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
让新的环境变量PATH生效:
[hadoop@hadoop102 hadoop-3.1.3]$ source /etc/profile
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop version
[hadoop@hadoop102 hadoop-3.1.3]$ mkdir wcinput
[hadoop@hadoop102 hadoop-3.1.3]$ cd wcinput/
[hadoop@hadoop102 wcinput]$ vim word.txt
内容:
hadoop yarn
hadoop mapreduce
vimgo
jbl jbl jbl
[hadoop@hadoop102 hadoop-3.1.3]$ cd /opt/module/hadoop-3.1.3
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ wcoutput/
[hadoop@hadoop102 hadoop-3.1.3]$ cd wcoutput/
[hadoop@hadoop102 wcoutput]$ cat part-r-00000
hadoop 2
jbl 3
mapreduce 1
vimgo 1
yarn 1
[hadoop@hadoop102 module]$ cd /opt/software/
[hadoop@hadoop102 software]$ mytools_rsync hadoop-3.1.3.tar.gz
同第三步骤
同第四步骤
有两种类型的配置文件:*-default.xml 和 *-site.xml。 *-site.xml 中的配置项覆盖 *-default.xml的相同配置项。
core-default.xml:默认的核心Hadoop属性配置文件。该配置文件位于下面的JAR文件中:hadoop-common-x.x.x.jar
[hadoop@hadoop102 software]$ cd $HADOOP_HOME/etc/hadoop
[hadoop@hadoop102 hadoop]$ vim core-site.xml
新增内容:
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop102:9820value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/module/hadoop-3.1.3/datavalue>
property>
<property>
<name>hadoop.http.staticuser.username>
<value>hadoopvalue>
property>
<property>
<name>hadoop.proxyuser.hadoop.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.hadoop.groupsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.hadoop.usersname>
<value>*value>
property>
说明:
fs.defaultFS:文件系统地址。可以是HDFS,也可以是ViewFS等其他文件系统。
hadoop.tmp.dir:默认值为/tmp/hadoop-${user.name}。比如跑MR时生成的临时路径本质上其实就是生成在它的下面,当然如果你不想也可以去更改 mapred-site.xml 文件。再比如,如果你不配置namenode和datanode的数据存储路径,那么默认情况下,存储路径会放在hadoop.tmp.dir所指路径下的dfs路径中。
hadoop.http.staticuser.user:默认值是dr.who。需要调整为启动HDFS的用户(普通用户/root),才能访问(增删文件/文件夹)WEB HDFS。
代理配置:hadoop.proxyuser.hadoop.hosts必须配,hadoop.proxyuser.hadoop.groups和hadoop.proxyuser.hadoop.users至少配置一个。如果不配置代理会有什么问题?????
hadoop.proxyuser.hadoop.hosts和hadoop.proxyuser.hadoop.users:本案例配置表示允许用户hadoop,在任意主机节点,代理任意用户。
hdfs-default.xml:默认的HDFS属性配置文件。该配置文件位于下面的JAR文件中:hadoop-hdfs-x.x.x.jar
[hadoop@hadoop102 hadoop]$ vim hdfs-site.xml
新增内容:
<property>
<name>dfs.namenode.http-addressname>
<value>hadoop102:9870value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop104:9868value>
property>
yarn-default.xml:默认的YARN属性配置文件。该配置文件位于下面的JAR文件中:hadoop-yarn-common-x.x.x.jar
[hadoop@hadoop102 hadoop]$ vim yarn-site.xml
新增内容:
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop103value>
property>
<property>
<name>yarn.nodemanager.env-whitelistname>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOMEvalue>
property>
<property>
<name>yarn.scheduler.minimum-allocation-mbname>
<value>512value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-mbname>
<value>4096value>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>4096value>
property>
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
说明:
yarn.nodemanager.env-whitelist:默认JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ
yarn.scheduler.minimum-allocation-mb:单位为MB
mapred-default.xml:默认的MapReduce属性配置文件。该配置文件位于下面的JAR文件中:hadoop-mapreduce-client-core-x.x.x.jar
[hadoop@hadoop102 hadoop]$ vim mapred-site.xml
新增内容:
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
说明:
mapreduce.framework.name 默认值为 local,设置为 yarn,让 MapReduce 程序运行 在 YARN 框架上。
[hadoop@hadoop102 hadoop]$ mytools_rsync /opt/module/hadoop-3.1.3/etc/hadoop/
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
[hadoop@hadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
内容:
hadoop102
hadoop103
hadoop104
同步到所有节点:
[hadoop@hadoop102 hadoop]$ mytools_rsync /opt/module/hadoop-3.1.3/etc/
注意:在NameNode所在节点(core-site.xml中配置的)执行命令
原因:先前在care_site.xml中配置了文件系统为HDFS,HDFS类似一块磁盘,初次使用硬盘需要格式化,让存储空间明白该按什么方式组织存储数据。
[hadoop@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
注意:在NameNode所在节点执行命令
[hadoop@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
注意:在ResourceManager所在节点(yarn-site.xml中配置的)执行命令
[hadoop@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
查看本机ip:百度搜索ip
配置阿里云安全组放开ip + 端口
配置本机hosts文件:用swichhosts配置
Web端查看HDFS的NameNode:http://hadoop102:9870
Web端查看YARN的ResourceManager:http://hadoop103:8088
上传小文件:
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop fs -put /opt/module/hadoop-3.1.3/wcinput/word.txt /input
上传大文件:
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop fs -put /opt/software/jdk-8u291-linux-x64.tar.gz /
[hadoop@hadoop102 subdir0]$ cat /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-343847855-172.28.76.203-1700227787497/current/finalized/subdir0/subdir0/blk_1073741825
[hadoop@hadoop102 software]$ cd /opt/software/test_tmp
[hadoop@hadoop102 test_tmp]$ hadoop fs -get /input ./
[hadoop@hadoop102 software]$ cd /opt/module/hadoop-3.1.3/
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
查看执行结果(通过WEB页面下载执行结果文件):
配置安全组:放开9864端口
访问HDFS WEB下载文件
查看执行结果(在服务器上直接查看文件):
cat /opt/module/hadoop-3.1.3/data/xxx
[hadoop@hadoop102 ~]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
[hadoop@hadoop102 hadoop]$ vim mapred-site.xml
新增内容:
<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop102:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>hadoop102:19888value>
property>
说明:
mapreduce.jobhistory.webapp.address:默认值是 0.0.0.0:19888
[hadoop@hadoop102 hadoop]$ mytools_rsync mapred-site.xml
因为修改了YARN相关的配置文件,必须重启服务重新加载配置文件,修改的配置文件内容才能生效。
[hadoop@hadoop103 hadoop]$ stop-yarn.sh
[hadoop@hadoop103 hadoop]$ start-yarn.sh
YARN重启后会丢失历史任务。这是因为yarn的任务管理是基于内存的,当我们重启项目时,内存会被清空,导致历史任务丢失。为了解决这个问题,我们可以将任务信息保存到磁盘上,以便重启后能够恢复任务。
参考:https://blog.51cto.com/u_16175490/6816056
--daemon
参数来启动守护进程(daemon)。守护进程是在后台运行的,通常脱离了终端的控制。
[hadoop@hadoop102 hadoop]$ mapred --daemon start historyserver
放开19888端口
[hadoop@hadoop102 hadoop]$ jps
由于历史任务丢失,需要重新执行一个MR程序,来测试历史服务器。
注意
:先在WEB HDFS上删除output输出文件
[hadoop@hadoop102 hadoop]$ cd /opt/module/hadoop-3.1.3/
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
访问:http://hadoop103:8088
点击历史任务History
http://hadoop102:19888/jobhistory
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
[hadoop@hadoop102 hadoop-3.1.3]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
[hadoop@hadoop102 hadoop]$ vim yarn-site.xml
新增内容:
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log.server.urlname>
<value>http://hadoop102:19888/jobhistory/logsvalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
[hadoop@hadoop102 hadoop]$ mytools_rsync yarn-site.xml
因为修改了YARN相关的配置文件,必须重启服务重新加载配置文件,修改的配置文件内容才能生效。此时内存中读取的配置文件yarn-site.xml和磁盘中的不一致,停止YARN会报WARNING!
[hadoop@hadoop103 hadoop]$ stop-yarn.sh
[hadoop@hadoop102 hadoop]$ mapred --daemon stop historyserver
[hadoop@hadoop103 hadoop]$ start-yarn.sh
[hadoop@hadoop102 hadoop]$ mapred --daemon start historyserver
放开8042端口
[hadoop@hadoop102 hadoop]$ hadoop fs -rm -r /output
[hadoop@hadoop102 hadoop]$ cd /opt/module/hadoop-3.1.3/
[hadoop@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
http://hadoop102:19888/jobhistory
注意:重启集群后,任务执行历史记录会丢失!
[hadoop@hadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
[hadoop@hadoop103 hadoop]$ /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
[hadoop@hadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver
[hadoop@hadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver
[hadoop@hadoop103 hadoop]$ /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
[hadoop@hadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh