HDFS
提供了高可靠性、高扩展性和高吞吐率的数据存储服务
分布式存储
分布式计算
移动数据
将数据向计算移动,100G加载到内存(程序)速度很慢
移动计算
将计算向数据移动,将计算程序加载到各台服务器上。
HDFS分布式文件系统
核心角色
client :客户端
NameNode:Master节点(维护整个文件系统的元数据信息)
DataNode:Slave节点(保存文件系统的真实数据:block)
SecondaryNameNode:合并快照与日志操作的节点
注
元数据是描述数据的数据
Hadoop
Hadoop体系架构
Hadoop伪分布搭建
上传工具包
- 找到hadoop-2.7.5.tar.gz以及jdk-8u121-linux-x64.tar.gz压缩包–>
- 打开winSCP–>
- 新建文件夹–>
- 新建站点–>
- 主机名192.168.81.11,用户名root,密码123456–>
- 保存,站点名称node01,保存在创建的文件夹,保存密码–>
- 确定–>登录–>是
- 将1步中的两个文件鼠标左键拖到右侧Linux的/root/下
- 关闭winSCP
虚拟机配置JDK与Hadoop
- 在root@node01~下创建目录mkdir /opt/hpe
- 解压tar -zxvf hadoop-2.7.5.tar.gz -C /opt/hpe/
- 解压tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/hpe/
- 查看/opt/hpe下是否有两个文件
- 重命名jdk:mv jdk1.8.0_121 jdk1.8.0
- 配置环境变量:vi /etc/profile
- Shift+G新开一行,在最后增加一行:export JAVA_HOME=/opt/hpe/jdk1.8.0
- 继续增加一行:export PATH= P A T H : PATH: PATH:JAVA_HOME/bin,保存
- 刷新环境变量:source /etc/profile
- java -version
- jps:检查当前运行的进程
- ssh localhost:登录一下本机,看是否需要密码
- cd命令回到root家目录,在家目录下ls -a显示隐藏文件.ssh
- cd .ssh/
- ssh-keygen -t rsa然后一直敲回车
- ls查看多了两个文件id_rsa(私钥)和id_rsa.pub(公钥)
- 此处将公钥发送给另一个文件(完全分布式将公钥发送给其他对象):cat id_rsa.pub >> authorized_keys
- 测试是否可以免密钥登录:ssh localhost
- cd /opt/hpe/hadoop-2.7.5/
- vi /etc/profile
- 在倒数第二行,新增export HADOOP_HOME=/opt/hpe/hadoop-2.7.5一行
- 在最后一行末尾追加: H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:HADOOP_HOME/sbin保存
- source /etc/profile
- hadoop version
- cd /etc/hpe/hadoop-2.7.5/etc/hadoop/
- ls,然后修改其中的env文件
- vi hadoop-env.sh,将倒数第三行处JAVA_HOME指向的路径更改为/opt/hpe/jdk1.8.0
- vi mapred-env.sh 把注释去掉,继续使用刚才的目录,将jdk的路径替换掉
- vi yarn-env.sh 把注释去掉,继续使用刚才的目录,将jdk的路径替换掉
- 配置namenode
1)vi /etc/hadoop/core-site.xml,在configration里面加上
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
2)vi hdfs-site.xml,在configration里面加上
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
3)配置namenode角色:哪些节点充当namenode节点
vi slaves 将里面的文本改为node01保存
4)指定datenode和namenode存储路径
vi /etc/hadoop/core-site.xml,在configration里面加上
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hpe/hadoop/local</value>
</property>
- 设置secondarynamenode
vi hdfs-site.xml,在configration里面加上
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
- 对文件系统进行格式化
Hdfs namenode -format
cd /var/hpe/hadoop/local/dfs/name/current这些目录都有了 - 启动集群
先回到root@node01 hadoop下,start-dfs.sh,yes - 检测进程
jps发现有了NN,DN,SNN进程;此时current中增加了edits文件 - 创建当前用户的家目录
hdfs dfs -mkdir -p /user/root - 上传文件
hdfs dfs -put /root/hello.txt /user/root - 查看上传的文件
hdfs dfs -ls /user/root - 删除多层目录
hdfs dfs -mkdir -p /software/java
hdfs dfs -rm -r /software - 指定上传时块的大小
hdfs dfs -D dfs.blocksize=1048576 -put test.txt /user/root - 查看每个块存放的具体数据
cd /var/hpe/hadoop/local/dfs/
cd data/current./BP…/current/finalized/subdir0/ - 查看对应块的数据信息,是按照字节线性切割