Centos7 搭建Hadoop

更新时间:2024-03-08 17:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Centos7 搭建Hadoop

1.jdk安装(http://www.webkfa.com/one1/w288.html) 下载安装java jdk1.8.0_65 1)在 /home 下将jdk进行解压

#tar -xzvf jdk1.8.0_65.tar.gz jdk-8u111-linux-x64.tar.gz 当时rpm时,利用下面的命令 #chmod 777 jdk-8u11-linux-x64.rpm #rpm -i jdk-8u11-linux-x64.rpm

如果将目录重新命名。可利用下面命令 # mv jdk1.8.0_65 jdk 2)环境变量配置 #vi /etc/profile 输入以下内容:

export HBASE_HOME=/home/jdk export PATH=$HBASE_HOME/bin:$PATH 当不知道放在那儿时利用命令 #find / -name java

我的是利用rpm包安装的,所以配置环境变量如下

验证:#source /etc/profile #javac -verison

#java -version 2.ssh免密码验证

(http://blog.csdn.net/stark_summer/article/details/42393053)

1) 修改主机名称 Master节点 #vi /etc/hostname master (主机名字) #vi /etc/hosts 10.0.0.10 master 10.0.0.30 slave1 Slave1 节点 #vi /etc/hostname slave1 (主机名字) #vi /etc/hosts 10.0.0.10 master 10.0.0.30 slave1 互相ping一下

2)ssh免密码验证配置 Master节点: #cd ~/.ssh/

#ssh-keygen -t rsa 之后一直回车就可以了 最后生成2个文件:id_rsa id_rsa.pub

生成authorized_keys 文件

Slave1 节点做相同的工作!!!

3)共有密钥的合并

将master节点上的id_rsa_pub拷贝到slave1 上,并重命名为id_rsa.pub_s1

#scp id_rsa_pub 10.0.0.30:~/.ssh/id_rsa_pub_s1

同理:将slave1上的文件也这样拷到master上。命名为aa 将其合并到authorized_keys内 #cat aa >> authorized_keys

Slave1也进行同样的操作!!!

4)修改权限

将文件夹ssh修改成700 authorized_keys 修改成600(截图的错了)

上面的操作在master和slave1上都操作一下!!! 5)验证

开始我的ssh不成功,还需要密码输入,进行了下面的(1) 和(2) 的修改后成功了!!! 问题描述:

(1)ssh localhost:publickey 授权失败 sudo vi /etc/ssh/sshd_config

RSAAuthentication yes PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

service sshd restart

( #systemctl restart sshd.service centos 7)

注:ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。

如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;

如果publickey授权失败,依然会继续使用password授权。

不要设置 PasswordAuthentication no ,它的意思是禁止密码登录,这样就只能本机登录了!

(2)2、vi /etc/selinux/config SELINUX=disabled

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

最后重启你的 linux 执行 ssh localhost

(3)ssh ip 或 hostname 均提示:connection refused

目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口; 是否允许该用户登录;

本机是否设置了iptables规则,禁止了ssh的连入/连出;

3.安装Hadoop

1) 下载Hadoop-2.6.4.tar.gz

(http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.4/) 解压

#tar -xzvf Hadoop-2.6.4.tar.gz

2)在/home 目录下建立一个空目录tempData #mkdir tempData

# vi /etc/profile 里面添加环境变量 export HADOOP_HOME=/home/hadoop-2.6.4

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

3)下面开始修改配置文件 /home/hadoop-2.6.4/etc (1)hadoop-env.sh 添加java_home Export JAVA_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

Abase for other temporary directories.

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 -r hadoop-2.6.0/ master@10.0.0.30:/home/

4.验证

1、格式化namenode:

[root@master opt]$ cd hadoop-2.6.0/ [root@master hadoop-2.6.0]$ ls

bin dfs etc include input lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share tmp

[root@master hadoop-2.6.0]$ ./bin/hdfs namenode -format [root@slave1 .ssh]$ cd ~/opt/hadoop-2.6.0

[root@slave1 hadoop-2.6.0]$ ./bin/hdfs namenode -format 2、启动hdfs:

[root@master hadoop-2.6.0]$ ./sbin/start-dfs.sh

错误:localhost:Host key verification failed 解决:vi hadoop/etc/hadoop/slaves 将里面的localhost删除,只留下节点slave1 信息 [root@hadoop02 hadoop-2.6.0]$ jps 22230 Master 30889 Jps

22478 Worker 30498 NameNode

30733 SecondaryNameNode 19781 ResourceManager

注:当没有这个命令时,可以先#find / -name jps 查到目录存放的地方 然后再运行# /usr/java/jdk1.8.0_11/bin/jps 4、启动yarn:

[root@master hadoop-2.6.0]$./sbin/start-yarn.sh 31233 ResourceManager 22230 Master 22478 Worker 30498 NameNode

30733 SecondaryNameNode 31503 Jps 6、查看集群状态:

[root@master hadoop-2.6.0]$ ./bin/hdfs dfsadmin -report

注意:无法页面访问时,记得修改一下window下面C:\\Windows\\System32\\drivers\\etc里面的hosts文件,将ip及节点写入!!!

若无法写入时,可以将文件复制到桌面,将信息添加后在替换原来的文件!!! 7.浏览器中查看

注意:当无法访问时,记得关一下虚拟机里面的防火墙或是将Hadoop的所有端口加入防火墙中!!!

8.可以查看网上的hadoop2.6.0中自带的wordcount实例运行一下。试试看hadoop2.6.0是否安装成功。

验证:

1.在本地创建文件夹 input 。里面建立2个文本 f1.txt f2.txt 2.在HDFS上创建输入文件夹 #bin/hadoop fs -mkdir /hdfsInput

3.上传本地file中文件到集群的hdfsInput目录下

注意:如果要修改文件夹的权限,使用下面的命令 # $HADOOP_HOME/bin/hadoop fs -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: Unable to load native-hadoop library for your platform”

解决办法:

如果你是hadoop2.6的可以下载下面这个:

http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar

下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。操作如下:

tar -x hadoop-native-64-2.4.0.tar -C hadoop/lib/native/

7. 运行测试程序:wordcount时出现:Container exited with a non-zero

exit code 127

解决:配置文件里面有无法识别的字符,所有的节点都检查一遍! 8. INFO mapreduce.Job: Job job_1398669840354_0003 failed with state

FAILED due to: Application application_1398669840354_0003 failed 2 times due to AM Container for appattempt_13

解决:

9.Cannot

delete

/tmp/hadoop-yarn/staging/root/.staging/job_1462779765527_0001. Name node is in safe mode. 解决:/hadoop dfsadmin -safemode leave

10.Shell$ExitCodeException

Container exited with a non-zero exit code 1 现象:运行hadoop job时出现如下异常:

14/07/09 14:42:50 INFO mapreduce.Job: Task Id :

attempt_1404886826875_0007_m_000000_1, Status : FAILED

Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: org.apache.hadoop.util.Shell$ExitCodeException:

at org.apache.hadoop.util.Shell.runCommand(Shell.java:505) at org.apache.hadoop.util.Shell.run(Shell.java:418) at

org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650) at

org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195) at

org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:300) at

org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:81)

at java.util.concurrent.FutureTask.run(FutureTask.java:262) at

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744)

Container exited with a non-zero exit code 1 原因及解决办法:原因未知。重启可恢复正常。

如果不能正常使用,使用下面的修改,下面的修改可能会对hbase的使用产生影响!!!

11. .

、etc/hadoop/hadoop-env.sh

本文来源:https://www.bwwdw.com/article/km6a.html

Top