前言:
这个Hadoop的安装和使用操作起来很容易出错,反正各种的问题,所以在实验过程中需要细心、重复,有的时候是机器的问题,还有配置的问题。
下面我讲一下我遇到的坑!


第3章 Hadoop的安装和使用

注:本教程全部统一采用hadoop用户名登录Linux系统,用户名:hadoop 密码:hadoop

3.1 安装 Hadoop 前的准备工作

​ 本节介绍安装Hadoop之前的一些准备工作,包括更新APT、安装SSH和安装Java环境等。

3.1.1 更新 APT

为了确保Hadoop安装过程顺利进行,建议执行下面命令更新APT软件:

$ sudo apt-get update

3.1.2 安装 SSH

Ubuntu默认已安装了SSH客户端,因此,这里还需要安装SSH服务端,请在Linux的终端中执行以下命令:

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登录本机:

$ ssh localhost

执行该命令后会,会出现“yes/no”选择提示,输入“yes”,然后按提示输入密码hadoop,就登录到本机了。

然后,请输入命令“exit”退出刚才的SSH,就回到了原先的终端窗口;然后,可以利用ssh-keygen生成密钥,并将密钥加入到授权中,命令如下:

$ cd ~/.ssh/        # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -t rsa    # 会有提示,都按回车即可
$ cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

​ 此时,再执行ssh localhost命令,无需输入密码就可以直接登录了。

3.1.3 安装 Java 环境

在Linux终端中,执行如下命令:

$ sudo apt-get install default-jre default-jdk

​ 上述安装过程需要访问网络下载相关文件,请保持联网状态。安装结束以后,需要配置JAVA_HOME环境变量,请在Linux终端中输入下面命令打开当前登录用户的环境变量配置文件.bashrc:

$ vim ~/.bashrc

​ 在文件最前面添加如下单独一行(注意,等号“=”前后不能有空格),然后 保存退出
export JAVA_HOME=/usr/lib/jvm/default-java

注意:保存退出,按insert才能添加内容;添加完毕后,按esc键退出添加状态;然后直接键盘输入:wq,这个在哪输入都可以;这样就保存退出了

接下来,要让环境变量立即生效,请执行如下代码:

$ source ~/.bashrc    # 使变量设置生效

​ 执行上述命令后,可以检验一下是否设置正确:

$ echo $JAVA_HOME     # 检验变量值
$ java -version
$ $JAVA_HOME/bin/java -version  # 与直接执行java -version一样

​ 至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。


3.2 安装Hadoop

Hadoop包括三种安装模式:

单机模式:只在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统HDFS;
伪分布式模式:存储采用分布式文件系统HDFS,但是,HDFS的名称节点和数据节点都在同一台机器上;
分布式模式:存储采用分布式文件系统HDFS,而且,HDFS的名称节点和数据节点位于不同机器上。
本节介绍Hadoop的具体安装方法,包括下载安装文件、单机模式配置、伪分布式模式配置、分布式模式配置等。

3.2.1 下载安装文件

到Hadoop官网下载安装文件hadoop-2.7.1.tar.gz,假设下载得到的安装文件为hadoop-2.7.1.tar.gz。下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的默认规范,用户安装的软件一般都是存放在“/usr/local/”目录下。请使用hadoop用户登录Linux系统,打开一个终端,执行如下命令:

$ cd  ~/下载     # 进入下载目录
$ wget http://10.132.239.12:8000/file/hadoop-2.7.1.tar.gz  # 下载hadoop软件
$ sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local   # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-2.7.1/ ./hadoop      # 将文件夹名改为hadoop
$ sudo chown -R hadoop ./hadoop       # 修改文件权限

​ Hadoop解压后即可使用,可以输入如下命令来检查 Hadoop是否可用,成功则会显示 Hadoop版本信息:

$ cd /usr/local/hadoop
$ ./bin/hadoop version

3.2.2 单机模式配置

Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。Hadoop附带了丰富的例子,运行如下命令可以查看所有例子:

$ cd /usr/local/hadoop
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar

上述命令执行后,会显示所有例子的简介信息,包括grep、join、wordcount等。这里选择运行grep例子,可以先在“/usr/local/hadoop”目录下创建一个文件夹input,并复制一些文件到该文件夹下,然后,运行grep程序,将 input文件夹中的所有文件作为grep的输入,让grep程序从所有文件中筛选出符合正则表达式“dfs[a-z.]+”的单词,并统计单词出现的次数,最后,把统计结果输出到“/usr/local/hadoop/output”文件夹中。完成上述操作的具体命令如下:

$ cd /usr/local/hadoop
$ mkdir input
$ cp ./etc/hadoop/*.xml ./input   # 将配置文件复制到input目录下
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/*          # 查看运行结果

执行成功后,输出了作业的相关信息,输出的结果是符合正则表达式的单词 “dfsadmin”出现了1次。

需要注意的是,Hadoop默认不会覆盖结果文件,因此,再次运行上面实例会提示出错。如果要再次运行,需要先使用如下命令把output文件夹删除:

$ rm -r ./output

3.2.3 伪分布式模式配置

Hadoop可以在单个节点(一台机器)上以伪分布式的方式运行,同一个节点既作为名称节点(NameNode),也作为数据节点(DataNode),读取的是分布式文件系统 HDFS 中的文件。

修改配置文件


这里修改配置文件:需要我们进入虚拟机左侧的文件计算机文件夹内,找到下面路径下面的文件,然后右击文件,选择打开方式vim,然后就可以进行编辑了,可以复制粘贴进去,在粘贴的时候需要右击鼠标才能粘贴哦~,然后同样的方法保存退出。

需要配置相关文件,才能够让Hadoop在伪分布式模式下顺利运行。Hadoop的配置文件位于“/usr/local/hadoop/etc/hadoop/”中,进行伪分布式模式配置时,需要修改2个配置文件,即core-site.xml和hdfs-site.xml。

可以使用vim编辑器打开core-site.xml文件,它的初始内容如下:

<configuration>
</configuration>

​ 修改以后,core-site.xml文件的内容如下:

<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>

​ 在上面的配置文件中,hadoop.tmp.dir用于保存临时文件,若没有配置hadoop.tmp.dir这个参数,则默认使用的临时目录为“/tmp/hadoo-hadoop”,而这个目录在Hadoop重启时有可能被系统清理掉,导致一些意想不到的问题,因此,必须配置这个参数。fs.defaultFS这个参数,用于指定HDFS的访问地址,其中,9000是端口号。

同样,需要修改配置文件hdfs-site.xml,修改后的内容如下:

<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/tmp/dfs/data</value></property>
</configuration>

执行名称节点格式化

修改配置文件以后,要执行名称节点的格式化,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format

​ 如果格式化成功,会看到“successfully formatted”和“Exitting with status 0”的提示信息,若为“Exitting with status 1”,则表示出现错误。

启动Hadoop

执行下面命令启动Hadoop:

$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

​ 启动时可能会出现如下警告信息:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN
这个警告提示信息可以忽略,并不会影响Hadoop正常使用。

​ Hadoop启动完成后,可以通过命令 jps 来判断是否成功启动,命令如下:

$ jps

若成功启动,则会列出如下进程:NameNode、DataNode和SecondaryNameNode。

​ 通过start-dfs.sh命令启动Hadoop以后,就可以运行MapReduce程序处理数据,此时是对HDFS进行数据读写,而不是对本地文件进行读写。

使用Web界面查看HDFS信息

Hadoop成功启动后,可以在Linux系统中(不是Windows系统)打开一个浏览器,在地址栏输入地址“http://localhost:50070”,就可以查看名称节点和数据节点信息,还可以在线查看 HDFS 中的文件。

运行Hadoop伪分布式实例

上面的单机模式中,grep例子读取的是本地数据,伪分布式模式下,读取的则是分布式文件系统HDFS 上的数据。要使用HDFS,首先需要在HDFS中创建用户目录(本教程全部统一采用hadoop用户名登录Linux系统),命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir -p /user/hadoop

​ 接着需要把本地文件系统的“/usr/local/hadoop/etc/hadoop”目录中的所有xml文件作为输入文件,复制到分布式文件系统HDFS中的“/user/hadoop/input”目录中,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir input  #在HDFS中创建hadoop用户对应的input目录
$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input  #把本地文件复制到HDFS中

​ 复制完成后,可以通过如下命令查看HDFS中的文件列表:

$ ./bin/hdfs dfs -ls input

​ 执行上述命令以后,可以看到input目录下的文件信息。

​ 现在就可以运行Hadoop自带的grep程序,命令如下:

$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

​ 运行结束后,可以通过如下命令查看HDFS中的output文件夹中的内容:

$ ./bin/hdfs dfs -cat output/*

​ 需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示如下错误信息:
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists
因此,若要再次执行grep程序,需要执行如下命令删除HDFS中的output文件夹:

$ ./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

关闭Hadoop

如果要关闭Hadoop,可以执行下面命令:

$ cd /usr/local/hadoop
$ ./sbin/stop-dfs.sh

​ 下次启动Hadoop时,无需进行名称节点的初始化(否则会出错),也就是说,不要再次执行“hdfs namenode -format”命令,每次启动Hadoop只需要直接运行start-dfs.sh命令即可。

配置PATH变量

前面在启动Hadoop时,都要加上命令的路径,比如,“./sbin/start-dfs.sh”这个命令中就带上了路径,实际上,通过设置PATH变量,就可以在执行命令时,不用带上命令本身所在的路径。具体操作方法是,首先使用vim编辑器打开“~/.bashrc”这个文件,然后,在这个文件的最前面位置加入如下单独一行:

export PATH=$PATH:/usr/local/hadoop/sbin

​ 添加后,执行命令“source ~/.bashrc”使设置生效。设置生效后,在任何目录下启动Hadoop,都只要直接输入start-dfs.sh命令即可,同理,停止Hadoop,也只需要在任何目录下输入stop-dfs.sh命令即可。

Hadoop的安装和使用相关推荐

  1. Hadoop安装配置,并使用Hadoop计算圆周率测试Hadoop是否安装成功

    一.实验目的 掌握如何安装.配置和运行Hadoop,并使用Hadoop计算圆周率测试Hadoop是否安装成功. 二.实验环境 (1)Linux Ubuntu 16.04 (2)jdk-8u162-li ...

  2. hadoop配置安装

    必备软件 这里以Hadoop 1.1.2为学习的版本. jdk-6u24-linux-i586.bin hadoop-1.1.2.tar hbase-0.94.7-security.tar hive- ...

  3. linux hadoop etc目录,题目Linux平台下Hadoop的安装配置

    1Linux平台下Hadoop的安装配置 以下操作均是在虚拟机VWMare10.0平台上安装ubuntu12.04实现.首先要在ubuntu下穿件Hadoop用户. Ubuntulinux查看系统版本 ...

  4. Hadoop的安装(单机和集群)

    Hadoop单机的安装 Hadoop的安装包括以下几个步骤: 安装jdk 安装hadoop 安装jdk > vim /etc/profile (在该文件最下面增加以下语句) export JAV ...

  5. Hadoop的安装与配置及示例程序wordcount的运行

    前言 最近在学习Hadoop,文章只是记录我的学习过程,难免有不足甚至是错误之处,请大家谅解并指正!Hadoop版本是最新发布的Hadoop-0.21.0版本,其中一些Hadoop命令已发生变化,为方 ...

  6. Hadoop自动安装脚本

    Hadoop自动安装脚本 文章目录 Hadoop自动安装脚本 前言 脚本说明 脚本截图 后记 前言 最近在学习大数据的相关知识,对于 Hadoop的安装这一块,身边不少同学安装都存在许多问题,不行安装 ...

  7. hadoop的安装-配置文件修改

    Hadoop的安装 集群的规划: 服务器IP 192.168.252.150 192.168.252.151 192.168.252.152 主机名 node01 node02 node03 Name ...

  8. Mac Hadoop的安装与配置

    这里介绍Hadoop在mac下的安装与配置. 安装及配置Hadoop 首先安装Hadoop $ brew install Hadoop 配置ssh免密码登录 用dsa密钥认证来生成一对公钥和私钥: $ ...

  9. centos下hadoop的安装

    hadoop的安装不难,可是须要做不少的准备工作. 一.JDK 须要先安装jdk.centos下能够直接通过yum install java-1.6.0-openjdk来安装.不同公布版的安装方式可能 ...

  10. hadoop的安装与配置(伪分布式模式安装)

    最近偶然在研究hadoop看完网络上的配置文章居然在linux下安装成功的hadoop就把别人的文章进行说明一下,提供给需要的读者. hadoop 的安装分为本地模式.伪分布模式.集群模式.本地模式是 ...

最新文章

  1. docker保存linux镜像,docker导入导出容器和保存加载镜像
  2. The last packet successfully received from the server was 1,547,682,071 milliseconds ago. The last
  3. margin负值的理解和应用
  4. hdu 1116 Play on Words(欧拉通路)
  5. 阿里笔试题—战报交流
  6. 使用JDBC连接SQL Server 2000 命名实例(Named Instance)
  7. Python中通过PyPDF2实现PDF加密
  8. 配置加密_数据库密码配置项都不加密?心也太大了!
  9. ajax点击事件触发后台,使用jquery点击事件触发AJAX
  10. C语言荣获2019年度最佳编程语言
  11. xcode 修改 infodictionary_安卓系统修改复位键生效时间
  12. find 命令搜索符号链接文件夹的方法
  13. 学习SQL:INNER JOIN与LEFT JOIN
  14. JavaScript课堂笔记!
  15. 【Sql查询数据】for 日、月、年
  16. h5(html5)+css3+移动端前端
  17. 2020年全球激光雷达行业竞争格局分析,技术路线正处于快速发展迭代阶段「图」
  18. 系统更新win10服务器出错,Win10系统Windows Update更新出现0x80080005错误代码怎么办...
  19. 快速合并所有txt文档
  20. java中的match函数_javascript中match函数的用法小结

热门文章

  1. java使用itext7生成pdf
  2. (转)EBWin格式辞典的安装使用
  3. Android平台下渗透测试工具大集合
  4. 学校新机房装系统——联想机房网络同传
  5. kotlin android中文文档,Android studio 生成带Kotlin文档的实现方式
  6. 狼人杀休闲游戏微信小程序模板源码/微信小游戏源码
  7. 23种Python设计模式之建造者模式详解
  8. Python·设计模式
  9. 通过完美python注释,打印类的帮助文档
  10. Springboot项目启动报错: