了解Hadoop
Hadoop定义:
Hadoop是大数据领域中非常重要的基础技术,他是一个海量数据存储、处理系统,也是一个生态圈(HDFS,MapReduce,Hive,Hbase等)
Hadoop作用
Hadoop最初用作Nutch底层的海量数据存储和处理,后来人们发现他也非常适合大数据场景下的数据存储和处理,主要用作海量离线数据的存储和离线数据的计算。
hadoop安装
Hadoop 的安装有三种方式
单机模式:解压就能运行,但是只支持MapReduce的测试,不支持HDFS,一般不用。(测试,几乎不用)安装非常简单,只需要JDK环境然后上传Hadoop安装包
伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。优点:功能完整。缺点:性能低下。学习测试用。(测试环境)使用一台服务器,多进程模拟多角色,只能用于测试开发
完全分布式模式:集群方式安装,所有节点的高可用,生产级别。(生产环境需要)规模一般较大,最少需要五台服务器,真正支持高可用
伪分布式安装(测试开发使用)
需要环境:
JDK,JAVA_HOME,配置hosts,关闭防火墙,配置免密登录等(详见第一章)。
注意:我们只将其安装在hadoop01节点上。
官网下载hadoop 2.7.1
# 进入安装目录
cd /home/app
# 解压(上传文件可百度)
tar -xvf hadoop-2.7.1.tar.gz
# 进入hadoop
cd hadoop-2.7.1
# 进入etc/hadoop
cd etc/hadoop
# 修改
vim hadoop-env.sh
修改 core-site.xml
# 修改 core-site.xml
vim core-site.xml
粘贴以下代码到标签内
// 复制以下代码到configuration标签内
<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/home/app/hadoop-2.7.1/tmp</value>
</property>
修改 hdfs-site.xml
# 修改 hdfs-site.xml
vim hdfs-site.xml
粘贴以下代码到标签内
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件,工作环境不建议配-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改 mapred-site.xml
# 复制mapred-site.xml.template为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
# 修改mapred-site.xml
vim mapred-site.xml
粘贴以下代码到标签内
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改 yarn-site.xml
# 修改 yarn-site.xml
vim yarn-site.xml
粘贴以下代码到标签内
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
修改slaves
# 编辑slaves
vim slaves
将文件中的代码替换成以下字符串
hadoop01
配置hadoop的环境变量
# 编辑主配置文件
vim /etc/profile
复制以下代码到该文件中
#set java environment
JAVA_HOME=/home/app/jdk1.8.0_65
JAVA_BIN=/home/app/jdk1.8.0_65/bin
HADOOP_HOME=/home/app/hadoop-2.7.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH
# 重新加载profile使配置生效
source /etc/profile
# 环境变量配置完成,测试环境变量是否生效
# echo $HADOOP_HOME
# 观察结果是否与实际位置一致
启动
初始化
# 初始化
hdfs namenode -format
# 开启
start-all.sh
# 停止
stop-all.sh
#测试
jps
如果没有成功(进程数不够)
- stop-all.sh 停掉hadoop所有进程
- 删掉hadoop2.7.1下的tmp文件并重新创建tmp
- hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。
- start-all.sh 启动hadoop
HDFS常用操作指令
# 创建文件夹(不支持多级创建):
hadoop fs -mkdir /xxx
# 查看目录:
hadoop fs -ls /xxx
# 递归查看多级目录:
hadoop fs -lsr /xxx
# 上传文件到HDFS:
hadoop fs -put xxx.txt /xxx
# 下载文件到本地当前目录:
hadoop fs -get /xxx/xxx/xxx.txt
# 删除文件:
hadoop fs -rm /xxx/xxx/xxx.txt
# 删除文件夹(文件夹必须为空):
hadoop fs -rmdir /xxx/xxx
# 强制删除文件夹或文件
Hadoop fs -rm -r /xxx