1 Hadoop生态圈简介
重点组件:
- HDFS:分布式文件系统
- MAPREDUCE:分布式运算程序开发框架
- HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
- HBASE:基于HADOOP的分布式海量数据库
- ZOOKEEPER:分布式协调服务基础组件
- Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
- Oozie:工作流调度框架
- Sqoop:数据导入导出工具
- Flume:日志数据采集框架
2 搭建Hadoop集群
2.1 下载、解压、配置环境变量
|
|
2.2 Hadoop配置
hadoop-env.sh
|
|
core-site.xml
|
|
hdfs-site.xml
|
|
mapred-site.xml
|
|
yarn-site.xml
|
|
slaves
|
|
3 Hadoop Shell 命令
3.1 集群相关
- start-dfs.sh 启动hdfs
- start-yarn.sh 启动yarn
- start-all.sh 直接启动hdfs + yarn
- stop-all.sh 停止 hdfs + yarn
- hadoop namenode -format
3.2 HDFS
命令 | 功能 | 示例 | 备注 |
---|---|---|---|
-help | 输出命令参数手册 | ||
-ls | 显示目录信息 | hadoop fs -ls / | |
-mkdir | 创建目录 | hadoop fs -mkdir -p /aaa/bb/cc/dd | |
-moveFromLocal | 从本地剪切到hdfs | hadoop fs -moveFromLocal /home/hadoop/1.txt /aaa/bb/cc/dd | |
-moveToLocal | 从hdfs剪切到本地 | hadoop fs -moveToLocal /aaa/bb/cc/dd /home/hadoop/1.txt | |
-appendToFile | 追加一个文件到已经存在的文件末尾 | hadoop fs -appendToFile ./hello.txt /hello.txt | |
-cat | 查看文件内容 | hadoop fs -cat /hello.txt | |
-tail | 显示一个文件的末尾 | hadoop fs -tail /access_log.1 | |
-text | 以字符形式打印一个文件的内容 | hadoop fs -text /access_log.1 | |
-chgrp/-chmod/-chown | 修改文件权限 | hadoop fs -chmod 755 /hello.txt | |
-copyFromLocal | 从本地文件系统中拷贝文件到hdfs路径去 | ||
-copyToLocal | 从hdfs拷贝到本地 | ||
-cp | 从hdfs的一个路径拷贝到hdfs另一个路径 | ||
-mv | 在hdfs中移动文件 | ||
-get | 等同于copyToLocal | ||
-put | 等同于copyFromLocal | ||
-getmerge | 合并下载多个文件 | ||
-rm | 删除文件或文件夹 | hadoop fs -rm -r /aaa/bbb | |
-rmdir | 删除空目录 | hadoop fs -rmdir /aaa/bbb/ccc | |
-df | 统计问价那系统的可用空间信息 | hadoop fs -df -h / | |
-du | 统计文件夹的大小信息 | hadoop fs -du -s -h /aaa/* | |
-count | 统计一个指定目录下的文件节点数量 | hadoop fs -count /aaa/ | |
-setrep | 设置hdfs中文件的副本数量 | hadoop fs -setrep 3 /aaa/jdk.tar |
4 使用Hadoop集群
4.1 查看集群状态
hdfs dfsadmin -report
|
|
4.2 上传、下载文件
HDFS默认文件大小块为128MB,若文件大于128MB,HDFS将会对文件进行切割后存储。
HDFS对文件执行的切割非常简单,我们可以将下载后的多个切块使用cat block1 >> tmp.txt ,cat block2 >> tmp.txt 命令将完整的文件拼接出来。
HDFS文件的增删改查可以使用Hadoop的Shell命令进行操作。
4.3 测试MapReduce
- 上传文本文件到hdfs /paper.txt
- cd /opt/app/hadoop-2.6.4/share/hadoop/mapreduce
- hadoop jar hadoop-mapreduce-examples-2.6.4.jar wordcount /paper.txt /wordcount/output
- 到 http://hadoop1:8088 查看job执行流程
- 到HDFS查看统计结果 hadoop fs -cat /wordcount/output/part-r-00000
5 问题解决记录
5.1 CentOS7 64位系统问题
启动报错
|
|
解决
vim /etc/profile
|
|
5.2 格式化DFS
报错
|
|
解决
vim /etc/host
添加主机名 10-5-151-241
|
|
5.3 启动DataNode失败
报错
|
|
解决
根据日志中的路径,cd /home/hadoop/tmp/dfs
能看到 data和name两个文件夹,
将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID
让两个保持一致
然后重启,启动后执行jps,查看进程
或 直接删除data文件夹