## 概述
![](https://img.kancloud.cn/c6/25/c6258d658fdd2f2e7ed0c8f49b7e9667_543x253.png)
![](https://img.kancloud.cn/4f/be/4fbeedf9aa3a2d96466eb1e3370c6458_1058x311.png)
> 移动计算比移动数据更划算。
## HDFS的架构
1. NameNode(master) and DataNodes(slave)
2. master/slave的架构
3. NN:
> the file system namespace
> /home/hadoop/software
> /app
> regulates access to files by clients
4. DN:storage
5. HDFS exposes a file system namespace and allows user data to be stored in files.
6. a file is split into one or more blocks
> blocksize: 128M
> 150M拆成2个block
7. blocks are stored in a set of DataNodes
为什么? 容错!!!
8. NameNode executes file system namespace operations:CRUD
9. determines the mapping of blocks to DataNodes
> a.txt 150M blocksize=128M
> a.txt 拆分成2个block 一个是block1:128M 另一个是block2:22M
> block1存放在哪个DN?block2存放在哪个DN?
>
> a.txt
> block1:128M, 192.168.199.1
> block2:22M, 192.168.199.2
>
> get a.txt
>
> 这个过程对于用户来说是不感知的
10. 通常情况下:1个Node部署一个组件
## 开发环境 linux
> 先创建几个文件夹
```
mkdir software app data lib shell maven_resp
```
****非常重要!!!!!linux主机名改成没有下划线的!!!否则有问题!!!****
### Hadoop环境搭建
* 使用的Hadoop相关版本:CDH
* CDH相关软件包下载地址:http://archive.cloudera.com/cdh5/cdh/5/
* Hadoop使用版本:hadoop-2.6.0-cdh5.15.1
* Hadoop下载:wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
* Hive使用版本:hive-1.1.0-cdh5.15.1
### Hadoop安装前置要求
Java 1.8+
ssh
### 安装Java
* 解压安装包。
![](https://img.kancloud.cn/f3/e4/f3e44c5e2a3ea7103808f2c0d5402677_571x19.png)
* 注册环境变量。
![](https://img.kancloud.cn/bc/cb/bccb7517d646e7a1a26b14dd8b08b430_381x263.png)
* 环境变量生效。
### 配置无密码登录
> 如果🏠目录里没有.ssh 文件夹。`ssh localhost`先访问下本机,就会自动生成了。
```
ssh-keygen -t rsa 一路回车
```
```
cd ~/.ssh
[hadoop@hadoop000 .ssh]$ ll
总用量 12
-rw------- 1 hadoop hadoop 1679 10月 15 02:54 id_rsa 私钥
-rw-r--r-- 1 hadoop hadoop 398 10月 15 02:54 id_rsa.pub 公钥
-rw-r--r-- 1 hadoop hadoop 358 10月 15 02:54 known_hosts
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
```
* 这样登陆本机就不用输密码了。mac连还是要密码。
```
ssh root@139.155.58.151
```
## 安装hadoop
![](https://img.kancloud.cn/08/01/080193a0e8d9a594d729f38bcdc83770_574x28.png)
* 解压到:~/app
```
tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz.1 -C ~/app/
```
* 添加HADOOP_HOME/bin到系统环境变量
```
vim ~/.bash_profile
```
```
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.15.1
export PATH=$HADOOP_HOME/bin:$PATH
```
```
source ~/.bash_profile
```
* 修改Hadoop配置文件,地址:`/root/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop`
```
vim hadoop-env.sh
```
![](https://img.kancloud.cn/4e/de/4ede68361fd4522ffa6a5c28ad0955f4_292x59.png)
```
#配置主机
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://127.0.0.1:8020</value>
</property>
# 副本系数改为1
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
#修改默认临时目录位置,改为新建的文件夹
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
```
slaves
hadoop000
* 启动HDFS:
* 第一次执行的时候一定要格式化文件系统,不要重复执行: hdfs namenode -format
![](https://img.kancloud.cn/e3/c0/e3c08baf021b792d7d214cb26457a63f_983x209.png)
* 会在指定的tmp目录生成一些内容。
* 启动集群:$HADOOP_HOME/sbin/start-dfs.sh
* 验证:
```
[hadoop@hadoop000 sbin]$ jps
60002 DataNode
60171 SecondaryNameNode
59870 NameNode
```
http://139.155.58.151:50070
如果发现jps ok,但是浏览器不OK? 十有八九是防火墙问题
查看防火墙状态:sudo firewall-cmd --state
关闭防火墙: sudo systemctl stop firewalld.service
![](https://img.kancloud.cn/86/a9/86a9bb7bdaa91725cf9b96e445bf4545_1158x458.png)
### hadoop软件包常见目录说明
```
bin:hadoop客户端名单
etc/hadoop:hadoop相关的配置文件存放目录
sbin:启动hadoop相关进程的脚本
share:常用例子
```
### 停止hdfs
* start/stop-dfs.sh与hadoop-daemons.sh的关系
```
start-dfs.sh =
hadoop-daemons.sh start namenode
hadoop-daemons.sh start datanode
hadoop-daemons.sh start secondarynamenode
stop-dfs.sh =
....
```
> 视频课到3-10
[主机改名的问题](https://blog.csdn.net/snowlive/article/details/69662882#hadoop%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E4%B8%BB%E6%9C%BA%E5%90%8D%E6%9B%B4%E6%94%B9)