文章目录
- 数仓项目—hadoop3.1.3的安装和配置
- 1. hadoop3.1.3的安装
- 2. 配置hadoop3.1.3
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
- workers
- 3. 配置历史服务器
- 配置mapred-site.xml
- 4. 配置日志聚集功能
- 配置yarn-site.xml
- 5. 分发配置文件
- 6. 格式化
- 7. 启动集群
- 配置hadoop-env.sh
- 配置yarn-env.sh
- 配置mapred-env.sh
- 8. hadoop群起脚本
- 9. 集群时间同步
- 9.1 时间服务器配置(必须root用户)
- 9.2 其他机器配置(必须root用户)
- ☆
数仓项目—hadoop3.1.3的安装和配置
服务器hadoop103 | 服务器hadoop103 | 服务器hadoop105 | |
HDFS | NameNode DataNode | DataNode | DataNode SecondaryNameNode |
Yarn | NodeManager | Resourcemanager NodeManager | NodeManager |
1. hadoop3.1.3的安装
#上传到服务器,解压
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
#配置环境变量,本机是centos6.8
vim /etc/profile
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
2. 配置hadoop3.1.3
core-site.xml
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop103:8020</value>
</property>
<!-- 指定hadoop数据的存储目录
官方配置文件中的配置项是hadoop.tmp.dir ,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来具体指定namenode 和 datanode存储数据的目录-->
<property>
<name>hadoop.data.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为atguiug -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>atguigu</value>
</property>
<!-- 配置atguigu(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.atguigu.hosts</name>
<value>*</value>
</property>
<!-- 配置atguigu(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.atguigu.groups</name>
<value>*</value>
</property>
<!-- 配置atguigu(superUser)允许通过代理的用户 -->
<property>
<name>hadoop.proxyuser.atguigu.groups</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- namenode web端访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop103:9870</value>
</property>
<!-- 2nn web访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop105:9868</value>
</property>
<!-- 测试环境指定HDFS副本的数量1,默认是3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop104</value>
</property>
<!-- task环境变量的继承 -->
<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>3072</value>
</property>
<!-- yarn容器循序管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</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>
</configuration>
mapred-site.xml
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
workers
hadoop103
hadoop104
hadoop105
3. 配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下
配置mapred-site.xml
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop103:10020</value>
</property>
<!--history web address-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop103:19888</value>
</property>
</configuration>
4. 配置日志聚集功能
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要
重新启动 NodeManager、ResourceManager和HistoryManager。
配置yarn-site.xml
<!--开启日志聚集功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop103:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
5. 分发配置文件
xsync etc/hadoop/
6. 格式化
bin/hdfs namenode -format
如果抛出任何异常,删掉logs和data目录,再进行格式化。
7. 启动集群
#在hadoop103上执行
sbin/start-dfs.sh
#在hadoop104上执行
sbin/start-yarn.sh
启动报错
Starting namenodes on [hadoop103]
hadoop103: ERROR: JAVA_HOME is not set and could not be found.
Starting datanodes
hadoop103: ERROR: JAVA_HOME is not set and could not be found.
hadoop104: ERROR: JAVA_HOME is not set and could not be found.
hadoop105: ERROR: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [hadoop105]
hadoop105: ERROR: JAVA_HOME is not set and could not be found.
2020-11-19 02:07:13,860 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决办法:
配置hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
配置yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
配置mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
再次启动就可以了。
[atguigu@hadoop103 hadoop-3.1.3]$ xcall.sh jps
---------------- hadoop103-------------------
5857 Jps
5261 NameNode
5743 NodeManager
5391 DataNode
---------------- hadoop104-------------------
4696 ResourceManager
4491 DataNode
5182 Jps
4831 NodeManager
---------------- hadoop105-------------------
23032 SecondaryNameNode
23320 Jps
23196 NodeManager
22957 DataNode
- Web端查看HDFS的Web页面:http://192.168.119.132:9870/dfshealth.html#tab-overview
- Web端查看SecondaryNameNode:http://192.168.119.134:9868/status.html
8. hadoop群起脚本
hdp.sh
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input ..."
exit ;
fi
case $1 in
"start")
echo "--------------------启动hadoop集群------------------------"
echo "--------------------启动HDFS------------------------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo "--------------------启动YARN------------------------------"
ssh hadoop104 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo "--------------------启动Historyserver---------------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo "--------------------关闭hadoop集群------------------------"
echo "--------------------关闭Historyserver---------------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo "--------------------关闭YARN------------------------------"
ssh hadoop104 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo "--------------------关闭HDFS------------------------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Arga Error ... "
;;
esac
9. 集群时间同步
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
9.1 时间服务器配置(必须root用户)
#查看所有节点ntpd服务状态和开机自启动状态
#systemctl status ntpd
#systemctl is-enabled ntpd
service ntpd status
#在所有节点关闭ntp服务和自启动
#systemctl stop ntpd
#systemctl disable ntpd
service ntpd stop
#(2)修改hadoop103的ntp.conf配置文件
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)修改hadoop103的/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
#增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
#(4)重新启动ntpd服务
systemctl start ntpd
service ntpd start
#(5)设置ntpd服务开机启动
#systemctl enable ntpd
chkconfig ntpd on
9.2 其他机器配置(必须root用户)
#(1)在其他机器配置10分钟与时间服务器同步一次
sudo crontab -e
#编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
#(2)修改任意机器时间
sudo date -s "2017-9-9 11:11:11"
#(3)十分钟后查看机器是否与时间服务器同步
sudo date
#说明:测试的时候可以将10分钟调整为1分钟,节省时间。
☆