赞
踩
Hadoop技术 —— 脱自于Google的三篇论文(大数据软件一般都要求7*24小时不宕机)
把大数据中遇到的两个核心问题(海量数据的存储问题和海量数据的计算问题)全部解决了
分布式思想解决了海量数据的分布式存储问题
三个核心组件组成
解决分布式计算程序的资源分配以及任务监控问题
Mesos:分布式资源管理系统(YARN的替代品)
两个核心组件组成
分布式思想解决了海量数据的分布式计算问题
flume、Kafka、hbase、hdfs
MapReduce、Spark
Hive、Pig
sqoop
ercharts
官网:https://hadoop.apache.org
apache hadoop发行版本
hadoop软件中HDFS和YARN是一个系统,而且是一个分布式的系统,同时他们还是一种主从架构的软件。
第一种:本地安装模式:只能使用MapReduce,HDFS、YARN均无法使用 —— 基本不用
第二种:伪分布安装模式:hdfs和yarn的主从架构软件全部安装到同一个节点上
第三种:完全分布式安装模式:hdfs和yarn的主从架构组件安装到不同的节点上
第四种:HA高可用安装模式:hdfs和yarn的主从架构组件安装到不同节点上,同时还需要把他们的主节点多安装两三个,但是在同一时刻只能有一个主节点对外提供服务 —— 借助Zookeeper软件才能实现
修改配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-env.sh、mapred-site.xml、yarn-site.xml、yarn-env.sh、workers、log4j.properties、capacity-scheduler.xml、dfs.hosts、dfs.hosts.exclude
1、需要在Linux上先安装JDK,Hadoop底层是基于Java开发的
/etc/profile:系统环境变量
~/.bash_profile:用户环境变量
环境变量配置完成必须重新加载配置文件
source 环境变量文件路径
2、配置当前主机的主机映射以及ssh免密登录
3、安装本地版本的Hadoop
hadoop-3.1.4.tar.gz
传输到/opt/software目录下tar -zxvf hadoop-3.1.4.tar.gz -C /opt/app
vim /etc/profile
export HADOOP_HOME=/opt/app/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4、安装伪分布式版本的Hadoop
修改各种各样的hadoop配置文件即可
vim hadoop-env.sh
#第54行
export JAVA_HOME=/opt/app/jdk1.8.0_371
#第58行
export HADOOP_HOME=/opt/app/hadoop-3.1.4
#第68行
export HADOOP_CONF_DIR=/opt/app/hadoop-3.1.4/etc/hadoop
#最后一行
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
vim core-site.xml
<!--在configuration标签中增加如下配置-->
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://single:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 HDFS相关文件存放地址-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-3.1.4/metaData</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<!-- hdfs的dn存储的block的备份数-->
<value>1</value>
</property>
<!--hdfs取消用户权限校验-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:9870</value>
<!-- 50070,9870-->
</property>
<property>
<name>dfs.datanode.http-address</name>
<value>0.0.0.0:9864</value>
<!-- 50075,9864-->
</property>
<property>
<name>dfs.secondary.http-address</name>
<value>0.0.0.0:9868</value>
<!-- 50090,9868-->
</property>
<!--用于指定NameNode的元数据存储目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/app/hadoop-3.1.4/metaData/dfs/name1,/opt/app/hadoop-3.1.4/metaData/dfs/name2</value>
</property>
</configuration>
vim mapred-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 指定MR APP Master需要用的环境变量 hadoop3.x版本必须指定-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 指定MR 程序 map阶段需要用的环境变量 hadoop3.x版本必须指定-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 指定MR程序 reduce阶段需要用的环境变量 hadoop3.x版本必须指定-->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>250</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx250M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>300</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx300M</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>single:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>single:19888</value>
</property>
vim yarn-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371
vim yarn-site.xml
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<!-- 指定yarn的RM组件安装到哪个主机上-->
<value>single</value>
</property>
<property>
<name>yarn.application.classpath</name>
<!-- 指定yarn软件在运行时需要的一些环境路径-->
<value>
/opt/app/hadoop-3.1.4/etc/hadoop,
/opt/app/hadoop-3.1.4/share/hadoop/common/*,
/opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
</value>
</property>
<!-- yarn.resourcemanager.webapp.address:指的是RM的web访问路径-->
<!-- 日志聚集功能启动 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://single:19888/jobhistory/logs</value>
</property>
<!--关闭yarn对虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
vim workers
<!-- 将localhost改为single -->
single
vim log4j.properties
#第19行
hadoop.log.dir=/opt/app/hadoop-3.1.4/logs
#指定Hadoop运行过程中日志输出目录
hdfs namenode -format
HDFS
报错
解决方案:
vim /etc/profile
#在最后一行加入以下内容
# HADOOP 3.X版本还需要增加如下配置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#然后使配置文件生效
source /etc/profile
yarn
三台虚拟机需要配置IP、主机名、主机IP映射、ssh免密登录、时间服务器的安装同步、yum数据仓库更换为国内镜像源
时间服务器chrony的安装同步
yum install -y chrony
先配置主服务器
vim /etc/chrony.conf
在第7行添加allow 192.168.31.0/24
再配置两台从服务器
vim /etc/chrony.conf
就将3 - 6行的server删除后,添加一行server node1 iburst
开启服务
此处省略,如需请查看之前博客
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:9868</value>
</property>
<!--hdfs取消用户权限校验-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value> </property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>true</value>
</property>
</configuration>
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/opt/app/hadoop-3.1.4/etc/hadoop,
/opt/app/hadoop-3.1.4/share/hadoop/common/*,
/opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
共需配置九个相关文件
然后将node1上的/opt/app发送到node2和node3节点上的/opt上
scp -r /opt/app root@node2:/opt
namenode所在节点格式化
hdfs namenode -format
1、 HDFS是在namenode所在节点启动(node1)
2、YARN是在RM所在节点启动(node2)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。