了解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

hadoop大数据行业部署实战_hadoop

修改 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

hadoop大数据行业部署实战_hadoop大数据行业部署实战_02


hadoop大数据行业部署实战_大数据_03

如果没有成功(进程数不够)

  1. stop-all.sh 停掉hadoop所有进程
  2. 删掉hadoop2.7.1下的tmp文件并重新创建tmp
  3. hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。
  4. 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