Centos7 搭建Hadoop.docx
《Centos7 搭建Hadoop.docx》由会员分享,可在线阅读,更多相关《Centos7 搭建Hadoop.docx(20页珍藏版)》请在冰点文库上搜索。
Centos7搭建Hadoop
Centos7搭建Hadoop
1.jdk安装(
下载安装javajdk1.8.0_65
1)在/home下将jdk进行解压
#tar-xzvf jdk1.8.0_65.tar.gz jdk-8u111-linux-x64.tar.gz
当时rpm时,利用下面的命令
#chmod777jdk-8u11-linux-x64.rpm
#rpm-ijdk-8u11-linux-x64.rpm
如果将目录重新命名。
可利用下面命令
#mvjdk1.8.0_65jdk
2)环境变量配置
#vi/etc/profile
输入以下内容:
exportHBASE_HOME=/home/jdk
exportPATH=$HBASE_HOME/bin:
$PATH
当不知道放在那儿时利用命令
#find/-namejava
我的是利用rpm包安装的,所以配置环境变量如下
验证:
#source/etc/profile
#javac-verison
#java-version
2.ssh免密码验证
(
1)修改主机名称
Master节点
#vi/etc/hostname
master(主机名字)
#vi/etc/hosts
10.0.0.10master
10.0.0.30slave1
Slave1节点
#vi/etc/hostname
slave1(主机名字)
#vi/etc/hosts
10.0.0.10master
10.0.0.30slave1
互相ping一下
2)ssh免密码验证配置
Master节点:
#cd~/.ssh/
#ssh-keygen-trsa之后一直回车就可以了
最后生成2个文件:
id_rsaid_rsa.pub
生成authorized_keys文件
Slave1节点做相同的工作!
!
!
3)共有密钥的合并
将master节点上的id_rsa_pub拷贝到slave1上,并重命名为id_rsa.pub_s1
#scpid_rsa_pub10.0.0.30:
~/.ssh/id_rsa_pub_s1
同理:
将slave1上的文件也这样拷到master上。
命名为aa
将其合并到authorized_keys内
#cataa>>authorized_keys
Slave1也进行同样的操作!
!
!
4)修改权限
将文件夹ssh修改成700authorized_keys修改成600(截图的错了)
上面的操作在master和slave1上都操作一下!
!
!
5)验证
开始我的ssh不成功,还需要密码输入,进行了下面的
(1)和
(2)的修改后成功了!
!
!
问题描述:
(1)sshlocalhost:
publickey授权失败
sudovi/etc/ssh/sshd_config
RSAAuthenticationyes
PubkeyAuthenticationyes
AuthorizedKeysFile .ssh/authorized_keys
servicesshdrestart
(#systemctlrestartsshd.servicecentos7)
注:
ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。
如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;
如果publickey授权失败,依然会继续使用password授权。
不要设置PasswordAuthenticationno,它的意思是禁止密码登录,这样就只能本机登录了!
(2)2、vi/etc/selinux/config
SELINUX=disabled
chmod700~/.ssh
chmod600~/.ssh/authorized_keys
最后重启你的linux执行sshlocalhost
(3)sship或hostname均提示:
connectionrefused
目标主机的sshserver端程序是否安装、服务是否启动,是否在侦听22端口;
是否允许该用户登录;
本机是否设置了iptables规则,禁止了ssh的连入/连出;
3.安装Hadoop
1)下载Hadoop-2.6.4.tar.gz
(
解压
#tar-xzvfHadoop-2.6.4.tar.gz
2)在/home目录下建立一个空目录tempData
#mkdirtempData
#vi/etc/profile里面添加环境变量
exportHADOOP_HOME=/home/hadoop-2.6.4
exportPATH=$HADOOP_HOME/bin:
$HADOOP_HOME/sbin:
$PATH
3)下面开始修改配置文件/home/hadoop-2.6.4/etc
(1)hadoop-env.sh添加java_home
ExportJAVA_HOME=/usr/java/jdk1.8.0_11
(2)yarn-env.sh添加java-home
(3)修改slaves(里面添加的是其他几点的主机名,没有master节点)
(4)配置 core-site.xml文件(hdfs文件端口是9000、
file:
/home/tempData/hadoop/tmp)
hadoop.tmp.dir
/home/tempData/hadoop/tmp
Abaseforothertemporarydirectories.
fs.defaultFS
hdfs:
//master:
9000
io.file.buffer.size
4096
注意上面的路径!
!
!
(5)配置 hdfs-site.xml 文件-->>增加hdfs配置信息(namenode、datanode端口和目录位置)
dfs.namenode.name.dir
file:
///home/tempData/hadoop/dfs/name
dfs.datanode.data.dir
file:
///home/tempData/hadoop/dfs/data
dfs.replication
2
dfs.nameservices
hadoop-cluster
dfs.namenode.secondary.http-address
master:
50090
dfs.webhdfs.enabled
true
(6)配置 mapred-site.xml 文件-->>增加mapreduce配置(使用yarn框架、jobhistory使用地址以及web地址)
mapreduce.framework.name
yarn
true
mapreduce.jobtracker.http.address
master:
50030
mapreduce.jobhistory.address
master:
10020
mapreduce.jobhistory.webapp.address
master:
19888
mapred.job.tracker
http:
//master:
9001
注:
当我打开时,发现没有 mapred-site.xml这个文件,只有 mapred-site.xml.template这个文件,所以我将它重命名了
(7)配置 yarn-site.xml 文件-->>增加yarn功能
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master:
8032
yarn.resourcemanager.scheduler.address
master:
8030
yarn.resourcemanager.resource-tracker.address
master:
8035
yarn.resourcemanager.admin.address
master:
8033
yarn.resourcemanager.webapp.address
master:
8088
8)、将配置好的hadoop文件copy到另一台slave机器上
scp-rhadoop-2.6.0/master@10.0.0.30:
/home/
4.验证
1、格式化namenode:
[root@masteropt]$cdhadoop-2.6.0/
[root@masterhadoop-2.6.0]$ls
bin dfs etc include input lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share tmp
[root@masterhadoop-2.6.0]$./bin/hdfsnamenode-format
[root@slave1.ssh]$cd~/opt/hadoop-2.6.0
[root@slave1hadoop-2.6.0]$./bin/hdfs namenode-format
2、启动hdfs:
[root@masterhadoop-2.6.0]$./sbin/start-dfs.sh
错误:
localhost:
Hostkeyverificationfailed
解决:
vihadoop/etc/hadoop/slaves将里面的localhost删除,只留下节点slave1信息
[root@hadoop02hadoop-2.6.0]$jps
22230Master
30889Jps
22478Worker
30498NameNode
30733SecondaryNameNode
19781ResourceManager
注:
当没有这个命令时,可以先#find/-namejps查到目录存放的地方
然后再运行#/usr/java/jdk1.8.0_11/bin/jps
4、启动yarn:
[root@masterhadoop-2.6.0]$./sbin/start-yarn.sh
31233ResourceManager
22230Master
22478Worker
30498NameNode
30733SecondaryNameNode
31503Jps
6、查看集群状态:
[root@masterhadoop-2.6.0]$./bin/hdfsdfsadmin-report
注意:
无法页面访问时,记得修改一下window下面C:
\Windows\System32\drivers\etc里面的hosts文件,将ip及节点写入!
!
!
若无法写入时,可以将文件复制到桌面,将信息添加后在替换原来的文件!
!
!
7.浏览器中查看
注意:
当无法访问时,记得关一下虚拟机里面的防火墙或是将Hadoop的所有端口加入防火墙中!
!
!
8.可以查看网上的hadoop2.6.0中自带的wordcount实例运行一下。
试试看hadoop2.6.0是否安装成功。
验证:
1.在本地创建文件夹input。
里面建立2个文本f1.txtf2.txt
2.在HDFS上创建输入文件夹
#bin/hadoopfs-mkdir/hdfsInput
3.上传本地file中文件到集群的hdfsInput目录下
注意:
如果要修改文件夹的权限,使用下面的命令
#$HADOOP_HOME/bin/hadoopfs-chmod-R 777/hdfsInput
注意:
自带wordcount在share/hadoop/mapreduce目录下
4.上传成功后查看结果
问题:
1.注意jdk的环境变量配置,当现实jdk问题时,一般是JAVA_HOME的错误,一般是版本号错误!
2.修改jdk的环境变量的地方有:
/etc/profile
/home/hadoop2.6-4/etc/hadoop/hadoop-env.sh
/home/hadoop2.6-4/etc/hadoop/yarn-env.sh
如果要换掉jdk的版本,接的所有节点都要一一修改!
!
!
3.ssh不成功,首先检查是否是权限的问题!
一个是700,一个是600!
!
!
4.修改配置文件的时候一定要注意!
不要写错了!
!
!
5.记得修改防火墙的状态!
!
!
6.hadoop“util.NativeCodeLoader:
Unabletoloadnative-hadooplibraryforyourplatform”
解决办法:
如果你是hadoop2.6的可以下载下面这个:
下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。
操作如下:
tar-xhadoop-native-64-2.4.0.tar-C hadoop/lib/native/
7.运行测试程序:
wordcount时出现:
Containerexitedwithanon-zeroexitcode127
解决:
配置文件里面有无法识别的字符,所有的节点都检查一遍!
8.INFOmapreduce.Job:
Jobjob_1398669840354_0003failedwithstateFAILEDdueto:
Applicationapplication_1398669840354_0003failed2timesduetoAMContainerforappattempt_13
解决:
9.Cannotdelete/tmp/hadoop-yarn/staging/root/.staging/job_1462779765527_0001.Namenodeisinsafemode.
解决:
/hadoopdfsadmin-safemodeleave
10.Shell$ExitCodeException
Containerexitedwithanon-zeroexitcode1
现象:
运行hadoopjob时出现如下异常:
14/07/0914:
42:
50INFOmapreduce.Job:
TaskId:
attempt_1404886826875_0007_m_000000_1,Status:
FAILED
Exceptionfromcontainer-launch:
org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
atorg.apache.hadoop.util.Shell.runCommand(Shell.java:
505)
atorg.apache.hadoop.util.Shell.run(Shell.java:
418)
atorg.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:
650)
atorg.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:
195)
atorg.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:
300)
atorg.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:
81)
atjava.util.concurrent.FutureTask.run(FutureTask.java:
262)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:
615)
atjava.lang.Thread.run(Thread.java:
744)
Containerexitedwithanon-zeroexitcode1
原因及解决办法:
原因未知。
重启可恢复正常。
如果不能正常使用,使用下面的修改,下面的修改可能会对hbase的使用产生影响!
!
!
11.
.
、etc/hadoop/hadoop-env.sh