Hadoop应用搭建
- 规划部署的目录/路径
- 安装
- HADOOP_HOME
- 配置文件
- 配置Hadoop角色
- 补充
- 格式化/初始化(“企业一辈子就这一次”)
- 启动
- Windows浏览器访问服务
- 看一下界面的基本信息
- 命令行使用 & 验证知识点
- 创建目录
- 如何保证上传文件不重名
- 文件如何切割成块
百度网盘分享:https://pan.baidu.com/s/1iXxAOARH2ieS-KClcD6P1g?pwd=fglo
提取码:fglo
Hadoop 2.6.5 官网
Hadoop - Apache Hadoop 2.6.5
官方配置说明文档
Apache Hadoop 2.6.5 - Hadoop MapReduce Next Generation 2.6.5 - Setting up a Single Node Cluster.
说明:以下面的命令只要是有缩进的,都不要弄命令行里,是给你写在配置文件中或输出一些很深的目录的路径的,不明白的可以看一下截图
规划部署的目录/路径
安装
Linux一般软件都装在 /opt 目录下
创建安装目录/opt/bigdata,tar解压安装,mv移动到安装目录
mkdir /opt/bigdata
tar xf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5 /opt/bigdata/
pwd
/opt/bigdata/hadoop-2.6.5
HADOOP_HOME
要用Hadoop的命令,就要设置HADOOP_HOME,跟JAVA_HOME一个道理
vi /etc/profile
最后改为
export JAVA_HOME=/usr/java/default
export HADOOP_HOME=/opt/bigdata/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
配置好后,在任何地方都可以用hadoop的命令
配置文件
Hadoop的配置文件的目录
cd /opt/bigdata/hadoop-2.6.5/etc/hadoop/
或 分两次
cd $HADOOP_HOME
cd etc/hadoop/
ls
给Hadoop 配置JAVA_HOME
因为Hadoop需要ssh免密登录的,但ssh有个弊端,必须修改 hadoop-env.sh
配置jdk的绝对路径
ssh弊端:登录“另一台机”(虽然伪分布式只有单机,但也可视为多机)时不会自动加载 /etc/profile
目录,所以是拿不到 JAVA_HOME 的
cd $HADOOP_HOME/etc/hadoop/
vi hadoop-env.sh
找到export JAVA_HOME=${JAVA_HOME}改为
export JAVA_HOME=/usr/java/default
定位
修改后
即:JAVA_HOME 要设置两次:系统,Hadoop
配置Hadoop角色
Hadoop角色 :NameNode ,DataNode ,Secondary
不知道的,直接跟着配,也不用看下面的补充官方文档解释
会发现配置文件是空的
把配置的内容写在中间
必看:配置的内容,给你了,就是缩进的那些东西
<configuration>
配置内容
</configuration>
这些配置文件一个个来
核心配置文件 core-site.xml
角色NameNode在哪里启动:node01的9000端口(node01是前面配过的主机名)
实际应该避免使用:像官方文档写的是localhost
要具体写死是哪个主机
vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
配置hdfs,hdfs-site.xml
伪分布式的块副本数是1,真正集群要改为2或3
NN的元数据name目录,DN的块数据data目录
Secondary NameNode ,合并主NN的 fsimage和editlog
<name>
属性文档规定死的,<value>
都要是空目录/不存在的(自动创建)
vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/bigdata/hadoop/local/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/var/bigdata/hadoop/local/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/var/bigdata/hadoop/local/dfs/secondary</value>
</property>
slaves 放启动DN的主机
vi slaves
node01
补充
想了解具体的要去看官方文档
配置文件导航
点击超链接打开网页文件,Ctrl+F 搜索重点:
https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/core-default.xml
https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
NN和DN都要临时目录,放临时数据的,/tmp 会被系统删除,建议改目录
所以开箱即用的配置是有风险的
格式化/初始化(“企业一辈子就这一次”)
/var 目录下没有bigdata目录
格式化
hdfs namenode -format
重要的是看输出的底部
就有bigdata了
格式化时,只初始化 NameNode
DataNode 、Secondary 在第一次启动时才创建初始化
clusterID - 集群ID
为什么不要在启动了后再次格式化?因为会导致这个id改变,NN和
DN就不匹配了
启动
启动dfs分布式文件系统,要停止就换为stop
start-dfs.sh
或
start-all.sh
以下是验证,不关搭建的事
可以直接跳到下面的浏览器访问
本来只有name,现在就验证创建了data、secondary
看一下data块数据目录下有什么
完整的
Windows浏览器访问服务
- 修改 Windows 的 hosts映射,找到文件打开
C:\Windows\System32\drivers\etc\hosts
- 添加 Linux主机的 IP和主机名
192.168.40.136 node01
保存退出,还要再一次保存退出
因为什么系统文件需要管理员身份,第一次后就切换到管理员了
- 浏览器打开(不是IE就行)
http://node01:50070
如果是访问不到,首先看看你前面有没有启动hadoop
看一下界面的基本信息
命令行使用 & 验证知识点
创建目录
查看文件系统支持的操作命令有什么,发现是几乎是一样(找到规律后)
hdfs dfs
hdfs dfs -mkdir /bigdata
hdfs dfs -mkdir -p /user/root
是在hadoop hdfs中创建的,本地根目录并没有
hdfs里的用户家目录是user
如何保证上传文件不重名
集群是如何保证:多节点同时上传文件在同一目录,文件名不重的?
用大文件上传,方便捕捉到过程(要Go刷新)
cd
hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
结论:先到NN的,就先用名字先占用,如:hadoop-2.6.5.tar.gz._COPYING_
找到存放data的目录路径,BP 时间戳要看自己本机的是什么,前面有展示过的
也可以跟着用 cd
和 ll
一步步定位到
cd /var/bigdata/hadoop/local/dfs/
cd data/
cd current/
cd BP (按Tab键自动补全)/
BP-641919094-192.168.40.136-1709617207811
cd current/finalized/subdir0/subdir0/
ll
文件如何切割成块
深入刨析:验证块切割,自己写一个小文件,自定义block块的大小上传
结论:被一刀切开了