大数据技术----Hadoop

大数据

无法在一定的时间范围内,使用常规的工具存储、处理的大数据量的集合,需要新型的存储方式来处理海量的数据,可以从各式各样的数据中发掘有价值的信息。

特性

  1. 大体量,TB 级的数据存储
    存储单位:
    1byte = 8bit
    1KB = 1024byte
    1MB = 1024KB
    1GB = 1024MB
    1TB = 1024GB
    1PB =1024TB
    1EB = 1024PB

  2. 多样性,种类多,来源多

  3. 时效性,很多数据需在一定时间内处理

  4. 准确性,处理的结果保证一定的准确性

  5. 大价值,挖掘有价值的信息

大数据带来的问题

  1. 数据存储问题:存储的空间、存取速度
  2. 数据计算及分析的效率

Hadoop

  1. 分析、处理海量数据的开源软件平台,java开发
  2. 分布式计算的框架

在这里插入图片描述
在这里插入图片描述
1.一份数据分四份,分别存到四个服务器磁盘
2.存数据的服务器节点—>datanode
3.管理 数 据 节 点 数据节点 的---->namenode
namemode–
1.存储文件的元信息,如大小、分块等。
2.心跳机制,检测datanode的状态

防止datanode挂掉,提高hadoop的高可用性,引入副本冗余机制,却降低了磁盘的利用率。
防止namenode挂掉,建立secondary namenode,不断与namenode保持同步,一旦namenode挂掉,secondary namenode立即取代

防止路由器挂掉,建立多个机架,如下:
多个集群
在这里插入图片描述
以上为HDFS,hadoop distributed file system

纵向扩展:在一台服务器上,升级硬件,如增加磁盘阵列
横向扩展:增加多个服务器,构建集群,hadoop思想

Hadoop特性

  1. 高可靠
  2. 高可扩展性,横向
  3. 高效性,节点之间动态的移动数据,建立副本
  4. 高容错性,hadoop默认存储数据的3个副本,失败的任务自动重新分配

环境安装

相关软件下载

linux安装java JDK

  1. 更新源 sudo apt-get update
  2. 解压jdk到/usr/local
    lauf@master:~$ sudo tar -zxvf jdk-xxxx.tar.gz -C /usr/local
    
    必须指定-C参数
  3. 重命名
    lauf@master:~$ cd /usr/local
    lauf@master:~$ sudo mv jdk1.8.0_251/  jdk8  #重命名为jdk8
    
  4. 配置环境变量
    lauf@master:~$ cd /home/lauf  #用户的家目录
    lauf@master:~$ sudo vim .bashrc
    
    #输入G -->跳到文件末尾	
    
    #添加配置
    export JAVA_HOME=/usr/local/jdk8
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
    export PATH=.:$JAVA_HOME/bin:$PATH
    
    #保存,退出编辑状态
    #Esc键---返回命令模式
    #shift + zz 保存退出
    
    lauf@master:~$ source .bashrc #使用配置生效
    
  5. 查看JDK是否安装成功
    lauf@master:~$ java -version #查看版本
    

安装Hadoop, 并配置伪分布式

伪分布式就是Hadoop集群主从节点进程均在同一台机器同一JVM

  1. 安装ssh,并配置免密登录(master->slave)
lauf@master:~$ sudo apt-get install ssh  #或者openssh-server

#安装完成后,使用ssh 登录本地系统
lauf@master:~$ ssh localhost   #此时需要输入当前用户密码
#使用其他用户登录
lauf@master:~$ ssh tom@localhost #此时输入tom 的密码
tom@localhost's password: 

#查看ssh服务的状态
lauf@master:~$ sudo /etc/init.d/ssh status
lauf@master:~$ sudo /etc/init.d/ssh start/stop/restart #开启服务、停止服务、重启服务

#配置ssh免密登录
lauf@master:~$ ssh-keygen -t rsa   #生成rsa密钥,存储在家目录下的.ssh目录
lauf@master:~$ cd /home/lauf
lauf@master:~$ cd .ssh
lauf@master:~/.ssh$ ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
#将公钥id_rsa.pub内容放到服务端的/home/lauf/.ssh/authorized_keys中
#登录localhost时,localhost就是服务端
lauf@master:~/.ssh$	sudo scp id_rsa.pub  lauf@ip:/home/lauf/.ssh/authorized_keys

#重新登录远程服务端
lauf@master:~/.ssh$ ssh ip  #不再需要密码

如果以上操作无效,可以配置其他的一些配置项:
/etc/ssh–>ssh_config PasswordAuthentication yes 取消注释
/etc/ssh–>sshd_config PermitRootLogin yes

重启服务
sudo /etc/init.d/ssh restart

2.将下载的hadoop-xxx.tar.gz解压到/usr/local

lauf@master:~$ tar -zxvf hadoop-xxx.tar.gz -C /usr/local
#重命名
lauf@master:~$ cd /usr/local
lauf@master:~$ sudo mv hadoop-2.10.0  hadoop2.10  #重命名
#改所属用户、组
lauf@master:~$ sudo chown -R lauf:lauf hadoop2.10/
  1. 验证Hadoop是否安装成功
lauf@master:~$ cd /usr/local/hadoop2.10/bin
lauf@master:~$ ./hadoop version
  1. 设置Hadoop 的JDK配置路径
    hadoop-env.sh
    yarn-env.sh
    mapred-env.sh
    均配置JDK
lauf@master:~$ cd /usr/local/hadoop2.10/etc/hadoop
lauf@master:~$ sudo vim hadoop-env.sh
#/java 搜索  并更改JAVA_HOME如下
export JAVA_HOME=/usr/local/jdk8

其他两个采用同样的方式配置JDK。

  1. 配置Hadoop的环境变量
lauf@master:~$ cd /home/lauf
lauf@master:~$ sudo vim .bashrc
#shift+g跳到文件的末尾
#末尾添加
export HADOOP_HOME=/usr/local/hadoop2.10
export CLASSPATH=.:${JAVA_HOME}/lib:${HADOOP_HOME}/sbin:$PATH
export PATH=.:${HADOOP_HOME}/bin:${HADOOOP_HOME}/sbin:$PATH

#保存退出
#使配置生效
lauf@master:~$ source .bashrc
#验证Hadoop 是否配置成功
hadoop version
  1. 配置伪分布式
    1)配置文件下修改core-site.xml 和 hdfs-site.xml
#配置core-site.xml
lauf@master:~$ cd /usr/local/hadoop2.10/etc/hadoop
lauf@master:~$ sudo vim core-site.xml
#增加配置
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>#配置Hadoop临时文件保存路径
        <value>file:/usr/local/hadoop2.10/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>#配置Hadoop默认端口
        <value>hdfs://localhost:9000</value> #完全分布式时,则为NameNode节点地址,不能再使用localhost
    </property>
</configuration>

#配置hdfs-site.xml
lauf@master:~$ sudo vim hdfs-site.xml
#增加配置
<configuration>
    <property>
    	#副本数量
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop2.10/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop2.10/tmp/dfs/data</value>
    </property>
</configuration>
	
  1. 配置yarn 资源管理器
#配置mapred-site.xml
lauf@master:~$ cd /usr/local/hadoop2.10/etc/hadoop
lauf@master:~$ cp mapred-site.xml.template  mapred-site.xml #复制一份
lauf@master:~$ sudo vim mapred-site.xml
#添加配置
	<property>
    <name>mapreduce.framework.name</name>#mapReduce的资源调度框架采用yarn
    <value>yarn</value>
    <name>mapreduce.jobhistory.address</name>#jobhistory服务器端地址
    <value>master:10020</value>
    <name>mapreduce.jobhistory.webapp.address</name>#jobhistory的Web端地址
    <value>master:19888</value>
	</property>


#配置yarn-site.xml
lauf@master:~$ sudo vim yarn-site.xml
#增加配置
	<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>master</value>#配置担当resourcemanager的节点
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>#reduce获取数据方式为shuffle
	</property>
  1. namenode 格式化
lauf@master:~$ cd /usr/local/hadoop2.10/bin
lauf@master:~$ ./hdfs namenode -format

#异常问题
#java.io.IOException: Cannot create directory /usr/local/hadoop/hdfs/name/current
#解决:sudo chmod -R u+w /usr/local/hadoop2.10/

#Storage directory /usr/local/hadoop2.10/tmp/dfs/name has been successfully formatted. 则成功格式化
  1. 启动Hadoop所有组件
    在master(NameNode)上,启动Hadoop集群
lauf@master:~$ start-all.sh  #deprecated

#也可以使用如下方式
lauf@master:~$ start-dfs.sh
lauf@master:~$ start-yarn.sh
  1. 查看节点
    web方式:
    http://localhost:50070 #查看hdfs
    http://localhost:8088 #查看yarn
    命令方式:
lauf@master:~$ jps #查看相关组件进程
  1. 上传文件,并查看
lauf@master:~$ hadoop fs -put  test.mp4   /      #将test.mp4上传至根目录下
lauf@master:~$ hadoop fs -ls / #查看根目录下的文件

#也可在浏览器中查看utilities

完全分布式

配置基本与伪分布式相同,在各节点遵循伪分布式安装与配置的基础上,执行如下:
1.配置/etc/hosts
在master上配置所有的集群节点IP hostname,然后将该文件同步到所有其他节点。

sudo vim /etc/hosts
192.168.43.107 master    #需配置静态IP地址
192.168.43.108 slave1
192.168.43.109 slave2


xsync /etc/hosts  #xsync是自己封装的rsync

注意:
在同步文件夹的时候,可能出现当前用户在远端服务器无法创建目录的情况,必须使当前用户一登录就具有root权限。
方案:
将/etc/passwd中当前用户的uid改为0
此时ssh user@remoteserver相当于root的远程登录
需要修改服务器sshd服务的配置文件

sudo vim /etc/ssh/sshd_config
PermitRootLogin yes

#重启服务
sudo service sshd restart

解决!!一般不建议这样做

2.更改集群中每个主机的名字

sudo vim /etc/hostname
master/slave1/slave2

3.配置文件slaves
在master上配置conf/slaves(列出所有的从节点),然后同步到其他节点

sudo vim slaves
slave1
slave2
#列出所有的从节点


xsync /usr/local/hadoop2.10/etc/hadoop/slaves #必须给绝对路径

4.配置master到slave的SSH免密登录
5.在master上开启集群

start-all.sh
#或者
start-dfs.sh
start-yarn.sh

#从节点的进程会被开启
  1. 在master上查看集群状况
hdfs dfsadmin -report

Configured Capacity: 19942490112 (18.57 GB)
Present Capacity: 11407425536 (10.62 GB)
DFS Remaining: 11407400960 (10.62 GB)
DFS Used: 24576 (24 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0


Live datanodes (1):

Name: 192.168.43.108:50010 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 19942490112 (18.57 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 7498444800 (6.98 GB)
DFS Remaining: 11407400960 (10.62 GB)
DFS Used%: 0.00%
DFS Remaining%: 57.20%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Aug 06 11:30:09 CST 2021
Last Block Report: Fri Aug 06 11:29:30 CST 2021

查看不到集群信息,则没有配置好
在这里插入图片描述

  1. 查看资源管理器节点
yarn node -list   #yarn-site.xml 必须配置yarn.resourcemanager.hostname-->master

Hadoop增加一个datanode

在master上的操作

  1. 配置slaves,加入新节点
sudo vim /usr/local/hadoop2.10/etc/hadoop/slaves

slave1
slave2  #加入新节点

将slaves配置文件同步到集群中的所有机器
xsync /usr/local/hadoop2.10/etc/hadoop/slaves

  1. 配置hosts,加入新节点
sudo vim /etc/hosts

ip1 slave1
ip2 slave2 #加入新节点

将hosts同步到集群中的所有机器

在新节点slave2上的操作

  1. 保持hadoop与master同配置
  2. 开启datanode进程
hadoop-daemon.sh start datanode
jps

#若未启动,则删除hadoop2.10/tmp 目录
#重试
  1. 开启nodemanager进程
yarn-daemon.sh start nodemanager
  1. 在master上查看从节点
hdfs dfsadmin -report

可以查看到新的从节点,表示添加节点成功!!

 
 
 
 
下一篇:hdfs----分布式文件系统

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值