Hadoop学习<一>--hadoop安装和环境变量设置

Hadoop核心项目:HDFS(Hadoop Distributed File System分布式文件系统),MapReduce(并行计算框架)

HDFS架构的主从结构:主节点,只有一个namenode,负责接收用户操作请求,维护文件系统的目录结构,管理文件与block之间关系,block与datanode之间的关系。

从节点,有很多个datanodes,负责存储文件,文件被分成block存储在磁盘上(方便管理,便于多节点读取),为保证数据安全,文件会有很多副本。

MapReduce的主从结构:主节点,只有一个JobTracker ,负责接收客户提交的计算任务,把计算任务分给TaskTracker执行,并监控TaskTracker的执行情况。

从节点,有很多个TaskTracker,负责执行JobTracker分配的计算任务,好比项目经理(JobTracker)和程序员(TaskTracker)的关系。

修改主机名:修改当前会话中的主机名:hostname zebra

修改配置文件中的主机名:vi /etc/sysconfig/network 改成zebra

把hostname和ip绑定:执行命令vi /etc/hosts,增加一行内容,如下

192.168.1.120 zebra(当前用户名和ip)保持退出

验证:ping zebra

关闭防火墙:执行命令 service iptables stop

验证:service iptables status

关闭防火墙的自动运行:执行命令,chkconfig iptables off

验证:chkconfig --list | grep iptables

JDK的安装:将文件拷贝到linux系统中,cp /media/jdk-1.6.bin /home/zebra

cd /home/zebra

对文件授予执行权限,chmod u+x jdk1.6.bin

执行解压缩,#./jdk1.6.bin

配置jdk环境变量:vi /etc/profile

添加两行内容,export JAVA_HOME=/home/zebra/jdk1.6

export PATH=.:$JAVA_HOME/bin:$PATH  (后面的这个$PATH要加上,不然系统的一些配置可能就没有了)

保存退出,执行#source /etc/profile,生效配置

验证:javac -version

详细位置搜索ubuntu系统jdk安装的默认路径。

或者按照如下方法,手动查找(机器不同可能结果也不一样,但思路都是一样的):

which javac

返回/usr/bin/javac

file /usr/bin/javac

返回/usr/bin/javac: symbolic link to `/etc/alternatives/javac‘

然后file /etc/alternatives/javac

返回/etc/alternatives/javac: symbolic link to `/usr/lib/jvm/java-6-sun/bin/javac‘

然后file /usr/lib/jvm/java-6-sun/bin/javac

返回/usr/lib/jvm/java-6-sun/bin/javac: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped

到此为止,说明路径是/usr/lib/jvm/java-6-sun/bin/,在Eclipse里面设置即可。

安装hadoop

执行命令,#tar -zxvf hadoop.1.0.tar.gz 进行解压缩

执行命令#mv hadoop.1.0 hadoop 重命名

执行命令#vi .etc/profile 设置环境变量

export HADOOP_HOME=/home/zebra/hadoop

修改文件,export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

保存退出

执行命令 source /etc/profile ,让配置文件生效

修改hadoop的配置文件,位于$HADOOP_HOME/conf目录下

修改四个配置文件,分别是hadoop-env.sh,core-site.xml,hdfa-site.xml,mapred-site.xml.

第一个是hadoop环境变量脚本文件hadoop-env.sh,修改第九行代码为#export JAVA_HOME=/home/zebra/jdk

保存退出,这里设置的是JAVA_HOME,注意去掉前面的#符

第二个是hadoop核心配置文件core-site.xml,结果如下:

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/zebra/hadoop/tmp</value>

<description>hadoop 的运行临时文件的主目录</description>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://zebra:9000</value>

<description>要修改为自己的HDFS 的访问路径</description>

</property>

</configuration>

第三个是hdfs配置文件hdfs-site.xml文件,结果如下

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

<description>存储副本数</description>

</property>

</configuration>

第四个是MapReduce配置文件mapred-site.xml,结果如下:

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>zebra:9001</value>

<description>修改成自己的JobTracker 的访问路径</description>

</property>

</configuration>

以上就是安装伪分布的最小化配置,接下来就是格式化文件系统。

hdfs是文件系统,所以在第一次使用之前需要进行格式化。执行命令(在#HADOOP_HOME/bin路径下)hadoop namenode –format。注意:只有第一次启动的时候格式化。如果真的有必要再次格式化,请先把“$HADOOP_HOME/tmp”目录下的文件全部删除。

格式化完成后,开始启动hadoop程序。

启动 hadoop 的命令脚本都在$HADOOP_HOME/bin/下,下面的所有命令都不再带有完整路径名称。

这里讲述 hadoop 启动的三种方式:

第一种,一次性全部启动:

执行 start-all.sh 启动 hadoop,观察控制台的输出,可以看到正在启动进程,分别是 namenode、datanode、secondarynamenode、jobtracker、tasktracker,一共 5 个,待执行完毕后,并不意味着这 5 个进程成功启动,上面仅仅表示系统正在启动进程而已。

我们使用 jdk 的命令 jps 查看进程是否已经正确启动。执行以下 jps,如果看到了这 5 个进程,说明 hadoop 真的启动成功了。如果缺少一个或者多个,那就得寻找原因了。

关闭 hadoop 的命令是 stop-all.sh。

上面的命令是最简单的,可以一次性把所有节点都启动、关闭。除此之外,还有其他命令,是分别启动的。

第二种,分别启动 HDFS 和 MapReduce:执行命令 start-dfs.sh,是单独启动 hdfs。执行完该命令后,通过 jps 能够看到 NameNode、DataNode、SecondaryNameNode 三个进程启动了,该命令适合于只执行 hdfs存储不使用 MapReduce 做计算的场景。关闭的命令就是 stop-dfs.sh 了。

执行命令 start-mapred.sh,可以单独启动 MapReduce 的两个进程。关闭的命令就是stop-mapred.sh 了。当然,也可以先启动 MapReduce,再启动 HDFS。这说明,HDFS 和 MapReduce的进程之间是互相独立的,没有依赖关系。

第三种,分别启动各个进程:

[[email protected] bin]# jps

14821 Jps

[[email protected] bin]# hadoop-daemon.sh start namenode

[[email protected] bin]# hadoop-daemon.sh start datanode

[[email protected] bin]# hadoop-daemon.sh start secondarynamenode

[[email protected] bin]# hadoop-daemon.sh start jobtracker

[[email protected] bin]# hadoop-daemon.sh start tasktracker

[[email protected] bin]# jps

14855 NameNode

14946 DataNode

15043 SecondaryNameNode

15196 TaskTracker

15115 JobTracker

15303 Jps执行的命令是“hadoop-daemon.sh start [进程名称]”,这种启动方式适合于单独增加、删除节点的情况,在安装集群环境的时候会看到。这也是我们的验证方法,通过jps查看启动个数。

我们也可以通过浏览器url:主机名:50070查看NameNode节点,可以发现他也是webserver服务,50030则是Map/Reduce的处理节点。

解决这个警告:Warning: $HADOOP_HOME is deprecated.

在/etc/profile中添加$HADOOP_HOME_WARN_SUPPRESS=1,这行记录即可

Hadoop 的常见启动错误:

当使用 hadoop 发现有问题时,首先使用 jps 命令查看启动的节点是否正确,然后再去查看日志文件。

1.设置主机名错误

看日志,会发现下面的错误

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode:

Invalid hostname for server: master

java.net.UnknownHostException:这是由于主机名设置错误造成的,请检查配置文件中关于主机名的设置,是否正确。

首先使用 hostname 命令查看主机名是否正确;

然后使用 more /etc/sysconfig/network 命令查看主机名是否记录在文件中;

最后使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置

2.ip 设置错误

看日志,发现下面的错误

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.BindException:

Problembinding to zebra/192.168.1.100:9000 : Cannot assign requested address

这是由于 ip 地址设置错误引起的,请检查主机的 ip 设置与配置文件的 ip 设置是否一致。

使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置。

hostname 不能带有下划线,不能数字开头

hostname 含有下划线,也会造成启动失败。

启动完成后,一定使用 jps 命令查看 5 个节点是否全部成功启动。如果哪个节点没有启动,请查看对应的 log 日志。日志的默认目录是$HADOOP_HOME/logs。

文件命名是有规律的,“hadoop-[当前用户名]-[节点名称]-[主机名].log”我们只查看 log

结尾的文件。如果是 namenode 节点没有启动,查看 hadoop-root-namenode-zebra.log 文件。

3.多次执行 hadoop 格式化

现象:在 Hadoop-root-datanode-master.log 中有如下错误:

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:

Incompatible namespaceIDs in

原因: 每次 namenode format 会重新创建一个 namenodeId,而 dfs.data.dir 参数配置的目录中包含的是上次 format 创建的 id,和 dfs.name.dir 参数配置的目录中的 id 不一致。

namenode format 清空了 namenode 下的数据,但是没有清空 datanode 下的数据,导致启动时失败,所要做的就是每次 fotmat 前,清空 dfs.data.dir 参数配置的目录。

重新格式化 hdfs的命令。

4.防火墙没有关闭

从本地往 hdfs 文件系统上传文件,出现异常,这个问题最有可能就是防火墙没有关闭,导致节点 DataNode 与节点 NameNode 通信失败。

可以使用 service iptables status 命令关闭防火墙。

这样关闭后,重启操作系统时,防火墙有可能重启,可以关闭自动重启功能。使用chkconfig iptables off 关闭。

5.安全模式导致的错误

错误提示如下:

org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode

在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个 DataNode 上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

如果着急的话,可以执行 hadoop dfsadmin –safemode leave 命令关闭安全模式。

时间: 2024-08-07 17:00:00

Hadoop学习<一>--hadoop安装和环境变量设置的相关文章

python学习-2 python安装和环境变量的设置

python的下载 1.可以去python官网下载,https://www.python.org/ 2.下载完成后,安装即可.(具体可以百度,网上都有很多安装方法) python的检测 1.打开开始-运行-cmd(快捷键win+R). 如果是mac,打开使用工具-终端 2.在终端里输入python,以下画面就是进入python了,表示安装成功 python环境变量 这里是win10举例 1.右键我的电脑-属性-高级 2.选择环境变量---在系统变量里找到Path---然后双击,进去之后新建,将p

Windows 平台下 Go 语言的安装和环境变量设置

1. Go 语言 SDK 安装包下载和安装 最新稳定版 1.5.3 安装包 go1.5.3.windows-amd64.msi下载地址 https://golang.org/dl/,大小约 69 MB(作者上传了一份该版本安装包到 CSDN 资源,嫌国外网速慢可以去下载:http://download.csdn.net/detail/defonds/9408855),下载之后直接运行安装,安装路径就使用它默认的 C:\Go\ 即可,之后一路 Next 并完成安装. 2. Go 语言环境变量设置

Linux Golang安装与环境变量设置

1.下载与安装 下载Golang安装包:go1.5.1.linux-amd64.tar.gz 使用tar命令将Go档案包解压到/usr/local目录下 tar -zxvf go1.5.1.linux-amd64.tar.gz -C /usr/local 2.环境变量设置 在profile文件添加下面四个环境变量(~/.bash_profile(单一用户) 或 /etc/profile(所有用户)) GOROOT:Go当前安装目录 export GOROOT=/usr/local/go GOPA

java安装和环境变量设置

参照网址:https://jingyan.baidu.com/article/f25ef2546e45e4482c1b82f0.html 工具/原料 jdk和jre官方网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html Java正确安装步骤 1 到官方网站下载最新的java安装包,输入上边网址 2 可以下载最新的JAVA安装包,这里选择您的电脑系统,是32位还是64位.然后同意服务后,点击下载 3 下载完成后

Windows 7下java SDK下载、安装及环境变量设置

第一步:下载Java JDK 1 登录官网站下载正版JDK   2 点击"SDK Download"进入Java JDK下载页面 注明: Java JDK和Java JRE区别 Java JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境. Java JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者. 3 选择适合你的Java JDK版本

【宋红康学习日记1】关于环境变量设置出现的问题——找不到或无法加载主类 java

忙活了一整天,最后被自己的小愚蠢所拜倒,不过也是学习到了很多,知道了出现问题怎样去解决. 问题是在cmd运行环境中编译我的第一个小程序HelloWorld时,javac命令可以运行,但是java命令后出现了下面的情况. 在经历了百度博客园各种查阅都无果的情况下,最后问舍友终于发现,原来是我程序写错了.在运行的时候,应该是java HelloWorld,没有后缀.这也说明我学习有多不认真,当然跟身体不舒服坐立不安(我不是女生)也很有关系,下次一定会好好掌握. 言归正传,简单说一下我配置环境变量的过

万里坑路第一步:1、cocos2d-js的JDKADK,SDK,apaceANT安装和环境变量设置

一.前期准备 1.下载JDK直接安装(安装路径不可出现中文) 点击下一步,中途出现Java安装: 按照安装提示easy完成JDK的安装 2.SDK,ant,和NDK只需解压到指定的目录即可 载后直接解压到指定目录即可,下为我的解压后图: 二.环境变量的设定(注意是在系统环境中设置) 1.新建环境变量 NDK_ROOT  : D:\android-ndk-r9c ANDROID_SDK_ROOT   : D:\adt-bundle-windows-x86_64-20131030\sdk ANT_R

WINDOWS上JDK安装与环境变量设置

一.JDK安装 jdk版本:jdk1.8.0_144 下载链接:https://pan.baidu.com/s/1eS2bFhg 密码:e3q1 下载JDK后点击安装,可以根据需要修改JDK的安装目录,如下: 比如我把安装目录改成:F:\Java\jdk1.8.0_144 点击确定,下一步完成安装. 注意:安装过程中会出现两次安装提示,第一次是安装 jdk ,第二次是安装 jre.建议将它们安装再同一个Java文件夹下. 完成安装后目录截图: 二.环境变量配置 在运行中打开cmd,输入命令 ja

Python安装及环境变量设置

Python安装:Python安装在OS上,执行操作:写一个文件文件中按照python的规则写,将文件交给python软件,读取文件中的内容,然后转换后执行,最终获取结果.Python软件==>python解释器(内存管理)官网下载:Python3 在继续更新Python2 在继续更新python3和python2变化比较大,所以两个版本都在变化,两个越来越接近可以把python2和python3都安装上windows 下安装点点配置环境变量 linux下安装查看默认Python版本python