赞
踩
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
1.把hadoop-3.1.3.tar.gz上传到linux的/opt/software目录下
hadoop-3.1.3.tar.gz
2.解压hadoop-3.1.3.tar.gz到/opt/server/目录下面
[linux@node1 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/server/
3.修改/etc/profile.d/yes.sh,添加环境变量
[linux@node1 server]$ sudo vim /etc/profile.d/yes.sh
#HADOOP_HOME
export HADOOP_HOME=/opt/server/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
4.让修改后的文件生效
[linux@node1 server]$ source /etc/profile
5.测试是否安装成功
[linux@node1 server]$ hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/server/hadoop-3.1.3/share/hadoop/common/hadoop-common-3.1.3.jar
1.查看Hadoop目录结构
[linux@node1 hadoop-3.1.3]$ ll
总用量 176
drwxr-xr-x. 2 linux linux 183 9月 12 2019 bin
drwxr-xr-x. 3 linux linux 20 9月 12 2019 etc
drwxr-xr-x. 2 linux linux 106 9月 12 2019 include
drwxr-xr-x. 3 linux linux 20 9月 12 2019 lib
drwxr-xr-x. 4 linux linux 288 9月 12 2019 libexec
-rw-rw-r--. 1 linux linux 147145 9月 4 2019 LICENSE.txt
-rw-rw-r--. 1 linux linux 21867 9月 4 2019 NOTICE.txt
-rw-rw-r--. 1 linux linux 1366 9月 4 2019 README.txt
drwxr-xr-x. 3 linux linux 4096 9月 12 2019 sbin
drwxr-xr-x. 4 linux linux 31 9月 12 2019 share
2.重要目录
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
1.核心配置文件:core-site.xml
<!--指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://node1:9820</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/server/hadoop-3.1.3/data</value> </property> <!-- 通过web界面操作hdfs的权限 --> <property> <name>hadoop.http.staticuser.user</name> <value>linux</value> </property> <!-- 后面hive的兼容性配置 --> <!-- 配置该linux(superUser)允许通过代理访问的主机节点 --> <property> <name>hadoop.proxyuser.linux.hosts</name> <value>*</value> </property> <!-- 配置该linux(superUser)允许通过代理用户所属组 --> <property> <name>hadoop.proxyuser.linux.groups</name> <value>*</value> </property> <!-- 配置该linux(superUser)允许通过代理的用户--> <property> <name>hadoop.proxyuser.linux.users</name> <value>*</value> </property>
2.HDFS配置文件:hdfs-site.xml
<!-- nn web端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>node1:9870</value> </property> <!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>node3:9868</value> </property> <!-- 测试环境指定HDFS副本的数量1 --> <property> <name>dfs.replication</name> <value>1</value> </property> <!-- 确定DFS名称节点应该在本地文件系统的何处存储名称表--> <property> <name>dfs.namenode.name.dir</name> <value>file:///opt/server/hadoop-3.1.3/dfs/name</value> </property> <!--DFS数据节点应在本地文件系统的何处存储其块 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///opt/server/hadoop-3.1.3/dfs/data</value> </property>
3.YARN配置文件:yarn-site.xml
<!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>node2</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!-- yarn容器允许分配的最大最小内存 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <!-- yarn容器允许管理的物理内存大小 --> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> <!-- 关闭yarn对物理内存和虚拟内存的限制检查 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
4.MapReduce配置文件:mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5.集群节点workers
node1
node2
node3
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
1)配置mapred-site.xml
[linux@node1 hadoop]$ vim mapred-site.xml
在该文件里面增加如下配置。
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
开启日志聚集功能具体步骤如下:
1)配置yarn-site.xml
[linux@node1 hadoop]$ vim yarn-site.xml
在该文件里面增加如下配置。
<!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://node1:19888/jobhistory/logs</value> </property> <!-- 设置日志保留时间为7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
1.分发hadoop文件
[linux@node1 server]$ xsync hadoop-3.1.3/
2.启动hadoop
如果集群是第一次启动,需要在node1节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[linux@node1 server]$ hdfs namenode -format
在配置了NameNode的节点(node1)启动HDFS
[linux@node1 server]$ start-dfs.sh
在配置了ResourceManager的节点(node2)启动YARN
[linux@node2 opt]$ start-yarn.sh
Web端查看HDFS的Web页面:
http://node1:9870/
Web端查看YARN的Web页面
http://http://node2:8088
查看SecondaryNameNode信息
http://node3:9868
#!/bin/bash if [ $# -lt 1 ] then echo "No Args Input..." exit ; fi case $1 in "start") echo " =================== 启动 hadoop集群 ===================" echo " --------------- 启动 hdfs ---------------" ssh node1 "/opt/server/hadoop-3.1.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" ssh node2 "/opt/server/hadoop-3.1.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh node1 "/opt/server/hadoop-3.1.3/bin/mapred --daemon start historyserver" ;; "stop") echo " =================== 关闭 hadoop集群 ===================" echo " --------------- 关闭 historyserver ---------------" ssh node1 "/opt/server/hadoop-3.1.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh node2 "/opt/server/hadoop-3.1.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh node1 "/opt/server/hadoop-3.1.3/sbin/stop-dfs.sh" ;; *) echo "Input Args Error..." ;; esac
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
配置时间同步具体实操:
1)时间服务器配置(必须root用户)
(0)查看所有节点ntpd服务状态和开机自启动状态
[linux@node1 ~]$ sudo systemctl status ntpd
[linux@node1 ~]$ sudo systemctl is-enabled ntpd
(1)在所有节点关闭ntp服务和自启动
[linux@node1 ~]$ sudo systemctl stop ntpd
[linux@node1 ~]$ sudo systemctl disable ntpd
(2)修改node1的ntp.conf配置文件
[linux@node1 ~]$ sudo vim /etc/ntp.conf
修改内容如下
a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
为restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
b)修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
(3)修改node1的/etc/sysconfig/ntpd 文件
[linux@node1 ~]$ sudo vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(4)重新启动ntpd服务
[linux@node1 ~]$ sudo systemctl start ntpd
(5)设置ntpd服务开机启动
[linux@node1 ~]$ sudo systemctl enable ntpd
2)其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次
[linux@node2 ~]$ sudo crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate node1
(2)修改任意机器时间
[linux@node2 ~]$ sudo date -s "2017-9-11 11:11:11"
(3)十分钟后查看机器是否与时间服务器同步
[linux@node2 ~]$ sudo date
说明:测试的时候可以将10分钟调整为1分钟,节省时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。