hadoop的配置参看github https://github.com/zhaikaishun/hadoop_cluster
作者: 翟开顺
关键字:
集群环境介绍,Hadoop简介,网络配置,所需软件
SSH免密码登陆配置,java环境安装,卸载原有的JDK, 安装jdk17, 配置java环境变量,验证是否成功,Hadoop集群安装,安装Hadoop,验证hadoop
hadoop错误分析
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
本教程为了简单起见只设置两个节点: master为主节点,node01为数据节点,节点之间局域网连接,相互可以ping通,节点IP分布如下
机器名称 | IP地址 |
---|---|
master | 192.168.200.128 |
node01 | 192.168.200.129 |
两个节点都是centos6.5系统,都有同一个用户,用户名叫Hadoop
切换到root用户 赋予etc/sudoers777权限,然后打开
[root@kaishun etc]# chmod 777 /etc/sudoers
[root@kaishun etc]# vim /etc/sudoers
找到Allows people in group wheel to run all commands,把下面%wheel的#给去掉,在Allow root to run any commands anywhere下,加上hadoop ALL=(ALL) ALL,然后保存
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
把sudoers的权限改回来成440
[root@kaishun etc]# chmod 440 /etc/sudoers
测试是否成功
在普通用户下
[hadoop@kaishun ~]$ sudo mkdir test
输入密码如果可以成功创建文件夹,说明成功
1. 查看当前机器名
在root用户下输入,显示
[root@kaishun hadoop]# hostname
显示 kaishun, 与我们规划的master不符合
2. 在root用户下修改当前机器名称
[root@kaishun hadoop]# vim /etc/sysconfig/network
修改HOSTNAME 为 master
HOSTNAME=master
同理,192.168.200.129这台机器修改成node01
修改之后,可能不会立即生效,我是重启后才生效的
3. 在root用户下配置hosts文件, 每台机器都需要配置(必须)
[root@master hadoop]# vim /etc/hosts
添加
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.128 master
192.168.200.129 node01
测试是否成功,如果能相互使用ping node01 ping master能成功,说明hosts文件配置成功
[hadoop@master ~]$ ping node01
PING node01 (192.168.200.129) 56(84) bytes of data.
64 bytes from node01 (192.168.200.129): icmp_seq=1 ttl=64 time=0.391 ms
64 bytes from node01 (192.168.200.129): icmp_seq=2 ttl=64 time=0.435 ms
64 bytes from node01 (192.168.200.129): icmp_seq=3 ttl=64 time=0.442 ms
[hadoop@node01 ~]$ ping master
PING master (192.168.200.128) 56(84) bytes of data.
64 bytes from master (192.168.200.128): icmp_seq=1 ttl=64 time=0.379 ms
64 bytes from master (192.168.200.128): icmp_seq=2 ttl=64 time=0.411 ms
64 bytes from master (192.168.200.128): icmp_seq=3 ttl=64 time=0.460 ms
这里介绍的是centos6.5, 7的也差不多,会更简单。其实这些步骤都是可以参考其他网上的
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。
安装CentOS6.5时,我们选择了一些基本安装包,所以我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果显示如下:
[hadoop@master ~]$ rpm –qa | grep openssh
[hadoop@master ~]$ rpm –qa | grep rsync
如果有相应的提示,说明这两个是装好了的,我这里是系统自带的
4.1 配置master无密码登陆所有的node
原理请百度
在master节点上执行以下命令 然后按几次回车键:
[hadoop@master ~]$ ssh-keygen -t rsa
出现下图
我们看到这句话 (图是补的,是root的免密登录)
Your identification has been saved in /home/root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
说明默认目录在 /home/hadoop/.ssh/ 下
接着在master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
[hadoop@master ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在我们进入~/.ssh目录可以看到
[hadoop@master ~]$ cd ~/.ssh/
[hadoop@master .ssh]$ ll
total 12
-rw-rw-r--. 1 hadoop hadoop 395 Apr 2 16:22 authorized_keys
-rw-------. 1 hadoop hadoop 1675 Apr 2 16:17 id_rsa
-rw-r--r--. 1 hadoop hadoop 395 Apr 2 16:17 id_rsa.pub
4.1.1. 修改文件"authorized_keys权限
[hadoop@master .ssh]$ chmod 600 ~/.ssh/authorized_keys
4.1.2. 设置SSH配置
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。这里找到这些内容,把前面的#去掉即可
[root@master .ssh]# vim /etc/ssh/sshd_config
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
重启SSH服务
[root@master .ssh]# /etc/rc.d/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@master .ssh]#
退出root用户,使用hadoop普通用户验证是否成功, ssh localhost, 如果不需要输入密码,那么验证成功
[hadoop@master .ssh]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 48:0b:ee:9b:67:85:4c:19:35:10:d1:1d:e1:5d:fa:c4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Sun Apr 2 16:09:39 2017 from 192.168.200.1
4.1.3. 把公钥复制到所有的node机器上
从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的node机器上。使用下面的命令格式进行复制公钥
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
我本地这样使用 scp ~/.ssh/id_rsa.pub [email protected]:~/ ,然后根据提示输入需要复制的远程服务器的密码,最后出现下面的提示说明复制成功
[hadoop@master ~]$ scp ~/.ssh/id_rsa.pub [email protected]:~/
[email protected]'s password: # 这里输入远程密码
id_rsa.pub 100% 395 0.4KB/s 00:00
[hadoop@master ~]$
4.1.4. 对节点机器进行配置
下面就针对IP为"192.168.200.129"的node01的节点进行配置。
4.1 ll -a查看是否有.ssh目录,如果没有,我们需要创建一个.ssh目录,并且赋予这个权限 drwx------. 2 hadoop hadoop 4096 Apr 2 16:40 .ssh 具体权限参照master的机器, centos6.5一般都是默认带有.ssh目录的
[hadoop@node01 ~]$ ll -a
drwx------. 2 hadoop hadoop 4096 Apr 2 16:40 .ssh
如果有这个目录了,我们把刚才的文件追加到authorized_keys 中去,然后修改authorized_keys文件权限
[hadoop@node01 ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@node01 .ssh]$ chmod 600 ~/.ssh/authorized_keys
进入到ssh 目录,ll 看到如下所示说明成功,注意权限是否正确
[hadoop@node01 .ssh]$ ll
total 8
-rw-------. 1 hadoop hadoop 395 Apr 2 16:52 authorized_keys
-rw-r--r--. 1 hadoop hadoop 391 Apr 2 16:40 known_hosts
4.2 用root用户修改/etc/ssh/sshd_config
参考前面的master的修改/etc/ssh/sshd_config的方法
设置SSH配置
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。这里找到这些内容,把前面的#去掉即可
[root@master .ssh]# vim /etc/ssh/sshd_config
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
重启SSH服务
[root@master .ssh]# /etc/rc.d/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@master .ssh]#
最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉
到此为止,我们经过的步骤已经实现了从"master"到"node01"SSH无密码登录
验证master到node01的无密码登陆,在master机器上,使用hadoop用户 ssh node01或者ssh 192.168.200.129, 下面是成功的的结果
[hadoop@master ~]$ ssh node01
Last login: Sun Apr 2 17:25:50 2017 from localhost
[hadoop@node01 ~]$
[hadoop@node01 ~]$ ssh master
Last login: Sun Apr 2 17:26:04 2017 from node01
[hadoop@master ~]$
因为有的系统自带有JDK, 安装前先卸载
查看所装的JDK
[hadoop@master ~]$ rpm -qa | grep jdk
出现
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
root下卸载前面查出的这两个
[root@master hadoop]# yum -y remove java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
[root@master hadoop]# yum -y remove java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
成功后会出现一个complete
首先用root身份登录master后在/usr/local下创建java文件夹
[root@master hadoop]# mkdir -p /usr/local/java
我们把FTP传来的jdk-7u79-linux-x64.tar.gz复制到/usr/local/java 文件夹下
[root@master Downloads]# cp jdk-7u79-linux-x64.tar.gz /usr/local/java/
解压并且
[root@master java]# tar zxvf jdk-7u79-linux-x64.tar.gz
解压完成后出现
[root@master java]# ll
total 149920
drwxr-xr-x. 8 uucp 143 4096 Apr 11 2015 jdk1.7.0_79
-rw-r--r--. 1 root root 153512879 Apr 2 18:17 jdk-7u79-linux-x64.tar.gz
给所有者权限
[root@master java]# chown hadoop:hadoop jdk1.7.0_79/ -R
编辑"/etc/profile"文件
[root@master java]# vim /etc/profile
在尾部加入
# set java environment
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export JRE_HOME=/usr/local/java/jdk1.7.0_79/jre
export PATH=$PATH:/usr/local/java/jdk1.7.0_79/bin
export CLASSPATH=./:/usr/local/java/jdk1.7.0_79/lib:/usr/local/java/jdk1.7.0_79/jre/lib
使配置生效
[root@master java]# source /etc/profile
java -version 出现 java version "1.7.0_79"
javac 有提示
java 有提示
确保是按照我上面的步骤,权限不能有错,否则可能会有问题, 同样,在另外的节点上也安装好jdk
所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。
[root@master Downloads]# mkdir -p /home/hadoop/MyCloudera/APP/hadoop/
复制到我们建立得目录
[root@master Downloads]# cp hadoop-2.7.1.tar.gz /home/hadoop/MyCloudera/APP/hadoop/
进入到我们复制得目录
[root@master Downloads]# cd /home/hadoop/MyCloudera/APP/hadoop
对此tar.gz解压
[root@master hadoop]# tar zxvf hadoop-2.7.1.tar.gz
改名为hadoop
[root@master hadoop]# mv hadoop-2.7.1 hadoop
[root@master APP]# chown -R hadoop:hadoop hadoop
ll 查看权限,是这样得
[root@master APP]# ll
total 4
drwxr-xr-x. 3 hadoop hadoop 4096 Apr 2 23:29 hadoop
[root@master APP]# vim /etc/profile
在末尾加上如下配置,其中HADOOP_HOME填写前面得hadoop存放得位置
# set hadoop path
export HADOOP_HOME=/home/hadoop/MyCloudera/APP/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
让配置生效
[root@master APP]# source /etc/profile
Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分成了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。
该hadoop-env.sh文件位于/home/hadoop/MyCloudera/APP/hadoop/hadoop/etc/hadoop目录下
在文件的末尾添加下面内容
# The java environment
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
我们先在本地建立几个目录,用来存放一些hadoop得文件
在根目录下,建立一个data
根目录路径
[root@master /]# pwd
/
创建一个data目录
[root@master /]# mkdir data
创建/data/tmpdata/hadoop/data/tmp目录
[root@master /]# mkdir -p /data/tmpdata/hadoop/data/tmp
然后对core-site.xml做如下配置, 具体得hadoop.tmp.dir和fs.default.name得功能参看百度google
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>/data/tmpdata/hadoop/data/tmpvalue>
property>
<property>
<name>fs.default.namename>
<value>hdfs://master:9000value>
property>
configuration>
我这里配置的比较完整,如果想简单点,有的其实可以默认设置,具体参看其他文章
1. 创建namenode和datanode的存放目录,然后对/data目录赋予权限。 注意权限不能有错
[root@master /]# mkdir -p /data/hadoop/data/name
[root@master data]# mkdir -p /data/hadoop/data/data
[root@master /]# chown hadoop:hadoop data/ -R
[root@master /]# chmod 777 data/ -R
2. 创建SecondaryNameNode的目录
在根目录下创建hadoop目录,然后创建/hadoop/SecondaryNameNode/目录,最后赋予hadoop目录权限
[root@master /]# mkdir hadoop
[root@master /]# mkdir -p /hadoop/SecondaryNameNode/
[root@master /]# chown hadoop:hadoop hadoop/ -R
[root@master /]# chmod 777 hadoop/ -R
hdfs-site.xml配置
<configuration>
<property>
<name>dfs.namenode.name.dirname>
<value>/data/hadoop/data/name/value>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>/data/hadoop/data/data/value>
property>
<property>
<name>dfs.replicationname>
<value>2value>
property>
<property>
<name>dfs.namenode.checkpoint.dirname>
<value>/hadoop/SecondaryNameNode/value>
property>
<property>
<name>dfs.http.addressname>
<value>master:50070value>
property>
<property>
<name>dfs.secondary.http.addressname>
<value>master:50090value>
property>
<property>
<name>dfs.datanode.du.reservedname>
<value>0value>
<description> 每个卷预留的空闲空间数量 description>
property>
<property>
<name>dfs.datanode.max.xcieversname>
<value>32768value>
property>
<property>
<name>dfs.datanode.socket.write.timeoutname>
<value>0value>
property>
<property>
<name>dfs.socket.timeoutname>
<value>180000value>
<description>socket通讯超时时间description>
property>
configuration>
我这里配置的比较完整,网上大多数都是用的默认,具体其中的一些参数可以百度
这里先建立几个文件
[root@master /]# mkdir -p /hadoop/mapreduce/jobhistory/history/done
[root@master /]# mkdir -p /hadoop/mapreduce/jobhistory/history/done_intermediate
[root@master /]# mkdir -p /hadoop/hadoop-yarn/staging
赋予权限
[root@master /]# chown hadoop:hadoop hadoop/ -R
[root@master /]# chmod 777 hadoop/ -R
复制一份 mapred-site.xml
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobtracker.addressname>
<value>master:9001value>
property>
<property>
<name>mapreduce.jobtracker.http.addressname>
<value>master:50030value>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>master:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>master:19888value>
property>
<property>
<name>mapreduce.jobhistory.done-dirname>
<value>/hadoop/mapreduce/jobhistory/history/donevalue>
property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dirname>
<value>/hadoop/mapreduce/jobhistory/history/done_intermediatevalue>
property>
<property>
<name>yarn.app.mapreduce.am.staging-dirname>
<value>/hadoop/hadoop-yarn/stagingvalue>
property>
<property>
<name>mapred.hosts.excludename>
<value>/home/hadoop/MyCloudera/APP/hadoop/hadoop/etc/hadoop/excludesvalue>
<final>truefinal>
property>
<property>
<name>mapreduce.tasktracker.map.tasks.maximumname>
<value>32value>
<description> 同一时间允许运行的最大map任务数 description>
property>
<property>
<name>mapreduce.tasktracker.reduce.tasks.maximumname>
<value>16value>
<description> 同一时间允许运行的最大reduce任务数 description>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>1000value>
property>
<property>
<name>mapreduce.map.memory.mbname>
<value>512value>
<description>map阶段申请的container的内存的大小description>
property>
<property>
<name>mapreduce.reduce.memory.mbname>
<value>512value>
<description>reduce阶段申请的container的内存的大小description>
property>
<property>
<name>mapreduce.map.java.optsname>
<value>-Xmx512Mvalue>
<description>用户设定的map/reduce阶段申请的container的JVM参数。最大堆设定要比申请的内存少一些,用于JVM的非堆部分使用。 description>
property>
<property>
<name>mapreduce.reduce.java.optsname>
<value>-Xmx1024Mvalue>
property>
<property>
<name>mapreduce.task.io.sort.mbname>
<value>1024value>
property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopiesname>
<value>16value>
configuration>
创建一些文件夹,并且赋予权限
[root@master /]# clear
[root@master /]# mkdir -p /data/nodemanager/tmp/
[root@master /]# mkdir -p /hadoop/nodemanager/remote
[root@master /]# mkdir -p /data/hadoop/data/nodemanager/logs
[root@master /]# chown hadoop:hadoop hadoop/ -R
[root@master /]# chmod 777 hadoop/ -R
[root@master /]# chown hadoop:hadoop data/ -R
[root@master /]# chmod 777 data/ -R
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
<property>
<name>yarn.resourcemanager.scheduler.addressname>
<value>master:8030value>
property>
<property>
<name>yarn.resourcemanager.resource-tracker.addressname>
<value>master:8031value>
property>
<property>
<name>yarn.resourcemanager.addressname>
<value>master:8032value>
property>
<property>
<name>yarn.resourcemanager.admin.addressname>
<value>master:8033value>
property>
<property>
<name>yarn.nodemanager.addressname>
<value>master:9999value>
property>
<property>
<name>yarn.nodemanager.webapp.addressname>
<value>master:8042value>
property>
<property>
<name>yarn.resourcemanager.webapp.addressname>
<value>master:8088value>
property>
<property>
<name>yarn.nodemanager.local-dirsname>
<value>/data/nodemanager/tmp/value>
property>
<property>
<name>yarn.nodemanager.remote-app-log-dirname>
<value>/hadoop/nodemanager/remotevalue>
property>
<property>
<name>yarn.nodemanager.log-dirsname>
<value>/data/hadoop/data/nodemanager/logsvalue>
property>
<property>
<name>yarn.nodemanager.log.retain-secondsname>
<value>604800value>
property>
<property>
<name>yarn.nodemanager.resource.cpu-vcoresname>
<value>24value>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>1024value>
property>
<property>
<name>yarn.nodemanager.vmem-pmem-rationame>
<value>2value>
property>
<property>
<name>yarn.scheduler.minimum-allocation-mbname>
<value>256value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-mbname>
<value>1024value>
property>
<property>
<name>yarn.scheduler.minimum-allocation-vcoresname>
<value>1value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-vcoresname>
<value>24value>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
configuration>
这个配置主要记录数据节点的列表,假如集群有3个数据节点,如:node001,node002,node003
那么在slave文件里面就可以设置为:
node001
node002
node003
我这里为两个节点,配置如下
master
node01
到此,master的hadoop的配置已经完成,对于其他节点,我们建立好相关的目录,复制过去,稍作配置即可了
需要建立的目录总结
[root@node01 /]# mkdir -p /home/hadoop/MyCloudera/APP/hadoop/
[root@node01 /]# mkdir data
[root@node01 /]# mkdir -p /data/tmpdata/hadoop/data/tmp
[root@node01 /]# mkdir -p /data/hadoop/data/name
[root@node01 /]# mkdir -p /data/hadoop/data/data
[root@node01 /]# mkdir hadoop
[root@node01 /]# mkdir -p /hadoop/SecondaryNameNode/
[root@node01 /]# chown hadoop:hadoop hadoop/ -R
[root@node01 /]# chmod 777 hadoop/ -R
[root@node01 /]# mkdir -p /hadoop/mapreduce/jobhistory/history/done
[root@node01 /]# mkdir -p /hadoop/mapreduce/jobhistory/history/done_intermediate
[root@node01 /]# mkdir -p /hadoop/hadoop-yarn/staging
[root@node01 /]# mkdir -p /data/nodemanager/tmp/
[root@node01 /]# mkdir -p /hadoop/nodemanager/remote
[root@node01 /]# mkdir -p /data/hadoop/data/nodemanager/logs
[root@node01 /]# chown hadoop:hadoop hadoop/ -R
[root@node01 /]# chmod 777 hadoop/ -R
[root@node01 /]# chown hadoop:hadoop data/ -R
[root@node01 /]# chmod 777 data/ -R
[root@node01 /]#
为了确保 hadoop目录 权限没有问题,每台机器在hadoop目录下再次执行一下以下命令
chown -R hadoop:hadoop hadoop
## 为了保险起见,我给了777的权限, 下面的这一步貌似不做也可以
chmod 777 hadoop/ -R
在master上使用普通用户hadoop进行操作
如果第一次启动需要对hadoop平台进行格式化,记得第一次,假如原来有数据就不需要格式化:
hdfs namenode -format
如果经过多次format之后,一定要把/data/hadoop/data/data /data/hadoop/data/name目录下的文件删除
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
记得永久的关闭防火墙chkconfig iptables off
chkconfig iptables off
开始启动,在master的普通用户 hadoop下进行操作
start-all.sh
验证hadoop: 输入jps命令,会出现以下进程说明成功
[hadoop@master hadoop]$ jps
[hadoop@master hadoop]$ jps
4197 ResourceManager
3851 DataNode
4602 Jps
4013 SecondaryNameNode
4308 NodeManager
3739 NameNode
创建一个目录
[hadoop@node01 ~]$ hadoop fs -mkdir -p /hive/warehouse
传一个文件
[hadoop@master hadoop]$ hadoop fs -put slaves /hive/warehouse
查看文件
[hadoop@master hadoop]$ hadoop fs -cat /hive/warehouse/slaves
显示
master
node01
经过上面的测试,说明我们集群安装成功
查看hdfs
http://192.168.200.128:50070
能显示正常
验证hadoop
http://192.168.200.128:8088/cluster/nodes
显示
能看到节点显示正常就算成功
这里的错误,一般都分为几大类,一类是某些文件夹没有创建,一类是某些文件或者文件夹权限不够,一类就是配置错误
这些错误都可以去logs目录下查看,我的logs目录在 /home/hadoop/MyCloudera/APP/hadoop/hadoop/logs
哪里有问题就对应哪个文件去查看错误,例如resourcemanager没起来或者出问题,就去yarn-hadoop-resourcemanager-master.log
-rwxrwxrwx. 1 hadoop hadoop 921348 Apr 3 13:19 hadoop-hadoop-datanode-master.log
-rw-rw-r--. 1 hadoop hadoop 1434 Apr 3 13:18 hadoop-hadoop-datanode-master.out
-rw-rw-r--. 1 hadoop hadoop 0 Apr 3 13:18 hadoop-hadoop-datanode-master.out.1
-rw-rw-r--. 1 hadoop hadoop 1434 Apr 3 12:52 hadoop-hadoop-datanode-master.out.2
-rwxrwxrwx. 1 hadoop hadoop 1434 Apr 3 12:45 hadoop-hadoop-datanode-master.out.3
-rwxrwxrwx. 1 hadoop hadoop 1434 Apr 3 12:42 hadoop-hadoop-datanode-master.out.4
-rwxrwxrwx. 1 hadoop hadoop 1434 Apr 3 12:35 hadoop-hadoop-datanode-master.out.5
-rwxrwxrwx. 1 hadoop hadoop 371773 Apr 3 13:26 hadoop-hadoop-namenode-master.log
-rw-rw-r--. 1 hadoop hadoop 717 Apr 3 13:18 hadoop-hadoop-namenode-master.out
-rw-rw-r--. 1 hadoop hadoop 717 Apr 3 13:09 hadoop-hadoop-namenode-master.out.1
-rw-rw-r--. 1 hadoop hadoop 717 Apr 3 12:52 hadoop-hadoop-namenode-master.out.2
-rwxrwxrwx. 1 hadoop hadoop 717 Apr 3 12:44 hadoop-hadoop-namenode-master.out.3
-rwxrwxrwx. 1 hadoop hadoop 717 Apr 3 12:42 hadoop-hadoop-namenode-master.out.4
-rwxrwxrwx. 1 hadoop hadoop 717 Apr 3 12:35 hadoop-hadoop-namenode-master.out.5
-rwxrwxrwx. 1 hadoop hadoop 0 Apr 3 01:43 SecurityAuth-hadoop.audit
-rwxrwxrwx. 1 hadoop hadoop 618506 Apr 3 13:19 yarn-hadoop-nodemanager-master.log
-rw-rw-r--. 1 hadoop hadoop 1402 Apr 3 13:19 yarn-hadoop-nodemanager-master.out
-rw-rw-r--. 1 hadoop hadoop 0 Apr 3 13:19 yarn-hadoop-nodemanager-master.out.1
-rw-rw-r--. 1 hadoop hadoop 1402 Apr 3 13:09 yarn-hadoop-nodemanager-master.out.2
-rw-rw-r--. 1 hadoop hadoop 1402 Apr 3 12:52 yarn-hadoop-nodemanager-master.out.3
-rwxrwxrwx. 1 hadoop hadoop 1402 Apr 3 12:36 yarn-hadoop-nodemanager-master.out.4
-rwxrwxrwx. 1 hadoop hadoop 1402 Apr 3 12:30 yarn-hadoop-nodemanager-master.out.5
-rwxrwxrwx. 1 hadoop hadoop 343209 Apr 3 13:19 yarn-hadoop-resourcemanager-master.log
-rw-rw-r--. 1 hadoop hadoop 701 Apr 3 13:19 yarn-hadoop-resourcemanager-master.out
-rw-rw-r--. 1 hadoop hadoop 701 Apr 3 13:09 yarn-hadoop-resourcemanager-master.out.1
-rw-rw-r--. 1 hadoop hadoop 701 Apr 3 12:52 yarn-hadoop-resourcemanager-master.out.2
-rwxrwxrwx. 1 hadoop hadoop 701 Apr 3 12:45 yarn-hadoop-resourcemanager-master.out.3
-rwxrwxrwx. 1 hadoop hadoop 701 Apr 3 12:36 yarn-hadoop-resourcemanager-master.out.4
-rwxrwxrwx. 1 hadoop hadoop 701 Apr 3 12:30 yarn-hadoop-resourcemanager-master.out.5