hadoop学习笔记

https://hadoop.apache.org/
2888、3888、2181、8020、50070、8088、8485、60010、69020

1、环境配置

  • ip(/etc/sysconfig/network-scripts)
# 网卡1
DEVICE=eht0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.59.11
GATEWAY=192.168.59.1
NETMASK= 255.255.255.0
# 网卡2
DEVICE=eht0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
  • hostname(vim /etc/sysconfig/network)
HOSTNAME = hadoop1.keane.com
  • 映射( vim /etc/hosts)
192.168.59.11 hadoop.keane.com
  • (vim /etc/selinux/config)
SELINUX=disabled
  • 重启

2、安装jdk

  • 1.安装
rpm -ivh jdk-7u80-linux-x64.rpm
  • 2、配置环境变量
# vim  ~.bash_profile
JAVA_HOME=/usr/java/jdk1.7.0_80
CLASSPATH=.
PATH=$JAVA_HOME/bin:
export JAVA_HOME
export CLASSPATH
# 重新加载配置文件
source .bash_profile
# 验证是否配置成功
echo $JAVA_HOME
# 输出配置地址

3、安装hadoop

  • 1、解压
tar -zxvf hadoop-2.5.2.tar.gz -C /opt/install/
  • 2、使用notebook插件NppFTP对配置文件进行修改(注意关闭防火墙systemctl stop firewalld)
  • 3、hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_80
  • 4、core-site.xml(解决总入口和临时目录的问题)
	<property>		
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1.keane.com:8020</value>
	</property>
 	<property>
           <name>hadoop.tmp.dir</name>
		   <value>/opt/install/hadoop-2.5.2/data/tmp</value>
	</property>
  • 5、hdfs-site.xml
 <property>
	      <name>dfs.replication</name>
		  <value>1</value>
</property>
# 控制程序代码访问权限
<property>
	      <name>dfs.permissions.enabled</name>
		  <value>false</value>
   </property>
  • 6、yarn-site.xml
<property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
</property>
  • 7、mapred-site.xml
<property>	 	        		
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
</property>
  • 8、slaves
hadoop1.keane.com
  • 9、格式化
bin/hdfs namenode -format

在这里插入图片描述

  • 10、启动
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager

在这里插入图片描述
在这里插入图片描述

4、hdfs命令

ls、put、get、mkdir、rm
bin/hdfs dfs -mkdir /keane
# 查看命令
bin/hdfs dfs# 新版
bin/hdfs fs# 老版

5、python访问HDFS

pip install hdfs
  • 注意:
    程序访问hdfs默认执行读操作,没有写的权限,如果需要写入,需要加入配置-hdfs-site.xml
  • 下载
  • 上传
res = self.client.upload(hdfs_path="",local_path="")
print(res)
  • 删除
  • 创建目录

6、HDFS集群搭建

  • 1、集群中机器的选择
    DataNode:存储数据,硬盘大
    NameNode:入口、树状目录结构、文件基本信息(都存放在内存中),内存比较大
  • 2、2个问题
    1. namenode上启动所有的datanode -->配置文件slaves
    2. 登录DataNode(ip,登录提供的密码)–>shell脚本
      ssh免密码登录–>解决登录需要密码的问题
  • 3、ssh免密登录
    1. ssh协议: 一台主机到另一台主机
    2. 用户端:
      通过加密算法生成公私钥对,公钥发给远程主机,私钥自己保存。
    3. 登录
      登录时,用户使用私钥+随机字符串进行登录
    4. 远程主机
      远程主机接受公钥后返回主机随机字符串,用户端使用私钥+随机字符串发给远程主机,然后远程主机解密,正确可以登录
  • 4、生成公私钥对
ssh ip  登录本机回自动生成一个.ssh文件夹
# 进入文件夹  ~/.ssh
ssh-keygen -t rsa # 生成公私钥对
# 将公钥发给远程主机
ssh-copy-id  root@ip

在这里插入图片描述

  • 5、如何将公钥发给远程主机
ssh-copy-id  root@ip
  • 6、HDFS集群搭建
    1、克隆三台节点
    2、每个节点设置ip地址、主机名、映射、防火墙、selinux、jdk ssh 免密登录
     # 将host文件复制到其他主机
    scp /etc/hosts root@ip:/etc
    
    3、解压hadoop安装包
    因为copy的已完成的节点,需要删除data/tmp中的数据
    rm -rf *
    
    4、修改6个配置文件,并同步集群的每个节点
    #	hsfs-site.xml -->节点换为3个或直接删除
    <property>
          <name>dfs.replication</name>
    	  <value>3</value>
    </property>
    #	slaves
    hadoop1.keane.com
    hadoop2.keane.com
    hadoop3.keane.com
    
    5、格式化
    bin/hdfs namenode -format
    
    6、启动、关闭集群
    sbin/start-dfs.sh
    sbin/stop-dfs.sh
    统一启动namenode/datanode/secondarynamenode
    
    在这里插入图片描述

7、NameNode的持久化

  • 1、NameNode定期的存储到硬盘中
FSImage-->NameNode某一时刻的数据镜像
	1、搭建HDFS集群时,进行格式化操作(bin/hdfs namenode -format),生成一个空的FSImage(data/tmp),后面会写入EditsLog
	2、每一次重启NameNode时,把EditsLog和FSImage的数据在内存中合并,并生成一个新的EditsLog(如果没到指定的时间不会合并,到了指定的时间才会合并)
	3、NameNode会定时的将Edits的数据和FSImage的数据进行合并(checkpoint机制)
EditsLog-->某一时刻后的,写操作信息

  • 2、FSImage和Editslog的存储位置
hdfs-site.xml
<property>
   <name>dfs.namenode.name.dir </name>
   <value>/opt/suns/fsimage</value>
</property>
<property>
   <name>dfs.namenode.edits.dir </name>
   <value>/opt/suns/editslog</value>
</property>
  • 3、安全模式
    namenode从新启动时,通过安全模式保证EditsLog的和FSImage的合并,在这个过程中,只允许client(客户端)进行读操作,而不能进行写操作
# 启动安全模式
bin/hdfs dfsadmin -safemode enter(进入)|leave(离开)|get(状态)
  • 4、secondaryNameNode
    • 1、工作原理
      因为FSImage和EditsLog的合并周期有点长,所有出现了secondaryNameNode(祥见7)
      工作原理:当时间打到checkpoint设置的值或者事务达到设置的100万,会将FSImage和EditsLog合并生成新的FSImage
    • 2、nameNode出现问题后,secondaryNameNode部分还原namenode数据
      secondaryNameNode,获得上一次的FSImage和EditsLog的数据合并,所以namenode如果内存出现故障,或硬盘出现故障,secondaryNameNode会有历史数据,可以基于secondaryNameNode部分还原数据
  • 5、hadoop相关的配置文件
    1、*-default.xml:最完整的配置信息
     	core-default.xml:整个集群相关的配置信息。1、总入口;2、临时目录
    	hdfs-default.xml:hdfs相关的参数,与文件系统相关的。(权限、FSImagEditsLog文件存储位置、块相关,数据节点目录)
    	mapred-default.xml:mapreduce相关信息
    	yarn-default.xml:yarn相关信息
    
    2、*-site.xml :优先级高于deault文件
    	core-site.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

颜大哦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值