Hadoop初识
学习要求:
1、知道框架的作用 2、明白框架的组成 应用-> 组件-> 进程 3、熟悉API以及命令 4、会自我进行原理的描述 5、会根据所学知识提出优化 6、整理知识点:框架+笔记
大数据的概念
大数据指高速 (Velocity) 涌现的大量 (Volume) 多样化 (Variety) 具有一定价值( Value )并且真实( veracity )的数据,其特性可简单概括为 5V
-
高速 :数据产生的速度较快 ,其数据产生的速度,是单台机器无法承载的
-
大量:数据经过一段时间积累,数据量级能够达到TB级以上
-
多样化:是指数据的类型多样化 处理的数据通常包括:日志数据 ,JSON数据(半结构化数据),结构化数据(二维结构数据)通常来自于业务系统中
-
价值:数据中可以挖掘的价值
-
真实:只要是历史产生过的数据,那么就可以存放到大数据库中,用于做数据分析
Hadoop简介
Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。
Hadoop的处理思想:分而治之
Hadoop解决了两方面的问题:数据的存储 数据的计算
Hadoop包含三个组件:
HDFS: 是一个分布式存储框架,适合海量数据存储
MapReduce: 是一个分布式计算框架,适合海量数据计算
Yarn: 是一个资源调度平台,负责给计算框架分配计算资源(1.x之后才生产的)
Hadoop部署过程
-
部署前准备
-
1.关闭防火墙
systemctl status firewalld systemctl stop firewalld systemctl disable firewalld
-
2.检查Java版本
要求使用自己安装的Java版本
echo $JAVA_HOME => /usr/local/soft/jdk1.8.0_171
java -version =>java version "1.8.0_171"
-
3.检查虚拟资源配置
大数据框架 基本上都是 主从结构 master-salve 对于主节点 要求资源多配置
master: 内存 3G 处理器 数量1 内核 2 硬盘 > 35G
node: 内存 2G 处理器 数量1 内核1 硬盘 > 35G
-
4.关闭桌面模式
systemctl set-default multi-user.target
reboot
-
5.开始克隆从节点 node1 node2
-
关闭Master
-
选择克隆
-
下一步创建完整克隆
-
选择存储位置 对磁盘要求容量大于60-70G 并且是固态硬盘
-
-
6.配置Node1 Node2节点
-
修改对应IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
-
node1 -> IPADDR=***110
-
node2 -> IPADDR=*** 120
-
-
修改主机名
-
-
vim /etc/hostname -> node1 2. reboot 重启
-
-
1.vim /etc/hostname -> node2 2. reboot 重启
-
-
-
7.校验时间是否同步
-
yum install ntp
-
ntpdate time.windows.com
-
-
8.设置 hosts映射
-
scp -r /etc/hosts node1:/etc/
-
scp -r /etc/hosts node2:/etc/
-
-
9.设置免密登录
在Masetr节点中执行如下命令:()
ssh-keygen -t rsa > 需要三次回车
ssh-copy-id master > 需要输入密码
ssh-copy-id node1
ssh-copy-id node2
验证:ssh node1
-
-
正式安装Hadoop
-
1.上传压缩包并解压
tar -zxvf hadoop-3.1.3.tar.gz
-
2.进入etc/hadoop中修改对应的配置文件
core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/soft/hadoop-3.1.3/data</value> </property>
-
hdfs-site.xml
<property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property> <!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9868</value> </property>
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>master</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>
mapred-site.xml
<!--指定MapReduce程序运行在Yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
hadoop-env.sh export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
workers 添加 node1 node2
start-dfs.sh stop-dfs.sh HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
start-yarn.sh stop-yarn.sh YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
vim hadoop-env.sh
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
-
3.修改环境变量
vim /etc/profile
HADOOP_HOME=/usr/local/soft/hadoop-3.1.3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile
-
4.将Hadoop分发到其他节点
cd /usr/local/soft
scp -r hadoop-3.1.3 node1:/usr/local/soft/hadoop-3.1.3
scp -r hadoop-3.1.3 node2:/usr/local/soft/hadoop-3.1.3
-
5.格式化HDFS
hdfs namenode -format
-
6.启动
start-all.sh
master:50070