一、Hadoop伪分布式环境部署
-
实训目的:
- 掌握Linux系统安装JDK和Hadoop以及配置环境变量
- 掌握Linux系统Hadoop为分布模式的部署配置
- 掌握Linux系统Hadoop的格式化、启动,停止,访问等操作
-
实训步骤:
-
上传文件
jdk-8u261-linux-x64.tar.gz
和hadoop-2.7.3.tar.gz
到系统中的/usr/local/src
目录下 -
解压缩上传的jdk安装包 和hadoop安装包
#进入/usr/local/src目录 [root@node01 ~]#cd /usr/local/src #解压jdk到当前目录下 [root@node01 src]#tar -zxvf jdk-8u261-linux-x64.tar.gz #重命名解压出来的目录为jdk,方便后续的配置使用 [root@node01 src]#mv jdk1.8.0_261/ jdk #解压hadoop到当前目录下 [root@node01 src]#tar -zxvf hadoop-2.7.3.tar.gz #重命名解压出来的目录为hadoop,方便后续的配置使用 [root@node01 src]#mv hadoop-2.7.3/ hadoop
-
检查系统中是否有已经安装的jdk,如果有需要 先卸载旧的 jdk 。
#查找是否已安装jdk rpm -qa | grep java #卸载已安装配置的jdk yum remove -y jdk*
-
配置环境变量:
(1)使用notepad++ 或命令
vi /etc/profile
,如果使用命令vi编辑,按键i或a或o
进入insert
模式,按照以下内容编辑,完成后按键Esc
, 输入:wq
保存退出。
#打开环境变量配置文件 /etc/profile
[root@node01 local]#vi /etc/profile```shell #向打开的环境变量配置文件,追加以下内容 export JAVA_HOME=/usr/local/src/jdk export PATH=$PATH:$JAVA_HOME/bin #追加HADOOP_HOME export HADOOP_HOME=/usr/local/src/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(2)重新加载环境变量配置文件,使得配置起作用
[root@node01 local]#source /etc/profile
-
测试 jdk 和 hadoop 的环境变量配置是否正确
#查看jdk的版本
[root@node01 local]#java -version
#查看hadoop的版本
[root@node01 local]#hadoop version6. 配置本地ssh免密登录 (1)生成秘钥 ```shell #进入当前用户的家目录下,删除隐藏文件.ssh [root@node01 local]#cd [root@node01 ~]#rm -rf .ssh #执行命令生成秘钥对,连续四次回车即可 [root@node01 ~]ssh-keygen -t rsa #执行完毕后,在/root/.ssh/目录下会生成 id_rsa(私钥)、id_rsa.pub(公钥), 使用以下命令查看 [root@node01 ~]cd /root/.ssh #将公钥复制到本地主机,会生成权限文件authorized_keys,执行命令会让输入登录密码。 [root@node01 ~]# ssh-copy-id node01
(2)测试本地免密登录
#使用 ssh 登录到 node01 [root@node01 ~]# ssh node01 #退出 node01 访问 [root@node01 ~]# exit
-
-
配置hadoop伪分布式环境
配置文件所在路径:
/usr/local/src/hadoop/etc/hadoop/
(1)建议使用 NotePad++ 工具进行 Hadoop 配置文件编辑
- 修改文件**
hadoop-env.sh
**, 设置 Hadoop环境对应的JDK
将语句 export JAVA_HOME=${JAVA_HOME} 修改为 export JAVA_HOME=/usr/local/jdk
(2)修改
core-site.xml
配置文件<!--NameNode的访问URI,也可以写为IP,8020为默认端口, 主机名根据实际修改--> <property> <name>fs.defaultFS</name> <value>hdfs://node01:8020</value> </property> <!--临时数据目录,用来存放数据,格式化时会自动生成--> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmpData</value> </property>
(3)修改 **
hdfs-site.xml
**配置文件<!--Block的副本数,伪分布式要改为1--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--NameNode 元数据存放地址--> <property> <name>dfs.name.dir</name> <value>/usr/local/src/hadoop/data/namenode</value> </property> <!--DataNode 副本存放地址--> <property> <name>dfs.data.dir</name> <value>/usr/local/src/hadoop/data/datanode</value> </property> <!--HDFS 临时存放地址--> <property> <name>dfs.tmp.dir</name> <value>/usr/local/src/hadoop/data/tmp</value> </property> <!--配置有secondarynamenode的主机, 主机名要根据实际修改--> <property> <name>dfs.namenode.secondary.http-address</name> <value>node01:50090</value> </property>
(4)修改
slaves
配置文件#向slaves文件中添加当前系统的主机名(例如:node01) node01
(5)格式化**
namenode
** - 修改文件**
# 格式化namenode ,由于已经配置过 Hadoop 的 bin 环境变量,则该命令可以在任意目录下运行
[root@node01 ~]# hdfs namenode -format
-
启动HDFS,有两种启动方式,任选一种启动hdfs:
(1)方式一:分步逐个启动
# 启动 HDFS 分布式文件系统 - 启动 namenode 元数据节点,负责管理文件切片存储 [root@node01 ~]hadoop-daemon.sh start namenode # 启动 datanode 副本节点,负责存储文件切片,定时发送心跳和块状态报告 [root@node01 ~]hadoop-daemon.sh start datanode # 启动 secondarynamenode 镜像备份节点,同步元数据和操作日志 [root@node01 ~]hadoop-daemon.sh start secondarynamenode
(2)方式二:使用批处理脚本启动
[root@node01 ~]start-dfs.sh
-
使用命令 **
jps
**查看启动的核心进程[root@node01 ~]jps #显示内容如下,表示HDFS启动成功 12176 DataNode 12085 NameNode 12270 SecondaryNameNode 12318 Jps
-
使用浏览器访问hdfs的相关信息
(1)首先配置windows系统下的映射文件,使用编辑器(记事本)打开 c:\windows\system32\drivers\etc\hosts
(2)添加虚拟机的映射,如下:
192.168.149.21 node01
(3)在浏览器中输入地址
node01:50070
或192.168.149.21:50070
-
关闭系统前,需要先关闭启动的hdfs
#关闭hdfs,使用批处理脚本 [root@node01 ~]stop-dfs.sh
-
启动HDFS时,常见错误及解决办法
通常出现的错误就是某个节点没有启动,例如namenode/datanode等。需要按照以下步骤处理:
- 先删除某些文件和目录
- 然后重新格式化,如果仍然出现错误, 请查看日志,日志所在目录 /usr/local/hadoop/logs/
#首先停止所有hdfs进程 [root@node01 ~]stop-dfs.sh #进入hadoop目录 [root@node01 ~]cd /usr/local/src/hadoop #删除 $HADOOP_HOME/logs 目录 [root@node01 hadoop]rm -fr logs/ tmpData/ data/ #重新格式化 [root@node01 local]hdfs namenode -format
二、Hdfs Shell基础操作
格式一:前缀
hadoop fs <-命令> <操作对象>
格式二:前缀
hdfs dfs <-命令> <操作对象>
【注意事项】
hdfs shell命令中使用的所有路径都是绝对路径。
- 新建目录
hadoop fs -mkdir /testdir 或者
hdfs dfs -mkdir -p /testdir/A/B
- 新建空白文件
hadoop fs -touchz /testdir/data.txt
- 查看目录和文件列表
hadoop fs -ls /testdir
- 查看hdfs上文件的内容
hdfs dfs -cat /testdir/data.txt
- 上传文件
hadoop fs <-put | -copyFromLocal> <localpath> <hdfspath>
#将本地的文件上传到hdfs目录testdir中
hadoop fs -put ./data.txt /testdir/ 或者
hadoop fs -copyFromLocal ./data.txt /testdir/
- 下载文件
hadoop fs <-get | copyToLocal> <hdfspath> <Localpath>
#将hdfs上的文件yarn-site.xml下载到本地目录中
hadoop fs -get /testdir/yarn-site.xml ./ 或者
hadoop fs -copyToLocal /testdir/yarn-site.xml ./
- 删除目录或文件
#删除hdfs空目录 B
hadoop fs -rmdir /testdir/A/B
#删除非空目录和文件
hadoop fs -rm -r /testdir