1. 预备
简单理解hdfs的原理
hdfs的作用
2. 开始搭建
2.1 设置配置信息
修改hadoop-env.sh文件
将hadoop-env.sh文件中的 # The java implementation to use. 下 修改成:
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/root/bigdata/jdk
修改core-site.xml文件
#etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/bigdata/tmp</value>
</property>
</configuration>
修改hdfs-site.xml文件
#etc/hadoop/hdfs-site.xml
<configuration>
<!-- 副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 设置块儿的大小,单位字节,这里不能太小,会报错误 -->
<property>
<name>dfs.blocksize</name>
<value>128m</value>
</property>
<!-- 访问namenode的地址 -->
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<!-- 访问secondarynode的地址 -->
<property>
<name>dfs.secondary.http.address</name>
<value>master:50090</value>
</property>
<!-- namenode数据的存放地址 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///root/hadoopdata/dfs/name</value>
</property>
<!-- datanode的数据存放地址 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///root/hadoopdata/dfs/data</value>
</property>
<!-- 日志的检测目录 -->
<property>
<name>fs.checkpoint.dir</name>
<value>file:///root/hadoopdata/checkpoint/dfs/cname</value>
</property>
<!-- 日志的edits检测,目录 -->
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///root/hadoopdata/checkpoint/dfs/cname</value>
</property>
<!-- 是否开启hdfs的文件系统权限 -->
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
</configuration>
2.2 格式化文件系统(安装Hadoop后只需执行一次格式化)
注意:配置的name.dir data.dir的路径不需要手动创建,而是由namenode的初始化程序去自动生成。
*初始化namenode: hdfs namenode -format
bin/hdfs namenode -format
2.3 开启NameNode进程和DataNode进程
sbin/start-dfs.sh
注意:如果机器换了IP,需要重启hdfs系统.否则无法访问namenode和datanode
2.4 检查Hadoop进程
#jps
通过浏览页面查看NameNode和Datanode
简单解释: Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
Compiled:编译 hadoop是有jenkins集成的
Cluster ID:集群id
Block Pool ID:单个datanode节点的block池的id,每个datanode节点的都要一样
2.5 创建运行MapReduce job所需的HDFS目录
#bin/hdfs dfs -mkdir /user
2.6 拷贝输入文件到分布式文件系统(上传)
注意:将数据导入hdfs方法 hdfs dfs -put 本地路径 hdfs路径(写绝对路径)
# bin/hdfs dfs -put etc/hadoop input
注意:1.hdfs dfs -put /usr/local/hadoop-2.7.1/etc/hadoop/*.xml /wordcount/input/
将数据导入到伪分布式的hdfs中报错:put: Specified block size is less than configured minimum value (dfs.namenode.fs-limits.min-block-size): 1280 < 1048576
原因:首先hdfs中默认是以块为单位进行数据存储的.我们在设置块的大小是hadoop2.0之前默认是64M,之后是128M.
(注意如果不加单位的话,默认单位是字节).当前我们设置的分块大小的最小值为1280字节时(如:
<property><name>dfs.blocksize</name><value>1280</value></property>
),小于规定的最小值,所以提示错误.默认单位是字节
//运行一些提供的示例:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep /input /output 'dfs[a-z.]+'
2.7 检查输出文件(下载)
从分布式文件系统拷贝输出文件到本地文件系统并检查它们
# in/hdfs dfs -get /hadoopdata/output /root/output
# cat output/*
2.8 在分布式系统上查看输出文件的内容
# bin/hdfs dfs -cat output/*
2.9 当你完成操作后,使用下列命令关闭进程
#sbin/stop-dfs.sh