首页 > 编程知识 正文

hadoop集群搭建,docker安装hadoop集群

时间:2023-05-03 07:55:09 阅读:142744 作者:3742

本文以虚拟机的方式构建hadoop集群

1.准备(搭建集群所用到的软件及系统前期配置):虚拟机: VMware Linux:centos 6.5 .在vmx sun公司的jdk : jdk1.8.0_131ssh :上安装sh,然后在Hadoop 3:上

分别取以下名称。

大师

节点1

节点2

在root用户下运行并更改主机名:

查看hostname //当前系统主机名vi /etc/sysconfig/network //进入文件

HSOTNAME属性被分配给要更改的主机名master

reboot //重新启动可以将其他两台主机分别重命名为node1、node2。

三台主机的地址映射:

获取ifconfig //主机的ip地址,并添加地址映射:以完成映射vi /etc/hosts //

这样,即使不每次敲ip,也可以直接敲主机名。 (当然其他两台都需要进行相同的配置)

2 .检查是否安装了2.sshrpm-QA|grepssh//ssh如果未列出yum install ssh -y //信息,请安装

由sh-keygen-trsa-p '-f~/.ssh/id _ RSA//~/.ssh /生成的公钥/私钥对-p ' '密码为空

(randomart image看着也很有趣。 )

cat~~/. ssh/id _ RSA.pub~/.ssh/authorized _ keys//将公钥添加到authorzied_keys文件chmod 0600~~/. ssh/authe

另外两台机器也准备好了的话,三台机器之间的连通可以达到:

将scpid _ RSA.pub node1://.ssh/master _ RSA.pub//master公钥发送到node 1

移至节点1并执行:

cat~~/. ssh/master _ RSA.pub~~/. ssh/authorized _ keys//将收到的公钥添加到文件中去node2的过程相同。 (master的know_host文件中已经存在类似节点node1的信息,所有后续连接都不加密。)。

三台虚拟机将各自的公钥发送到彼此一次,以便每台计算机的~/.ssh/know_host文件包含其他节点的ssh信息。 可以通过将收到的公钥添加到authorized_keys文件下,从下次开始免除密码登录。

第一次访问时有询问

确定就行了。 之后都是秒连。

面临的问题:

1.ssh : connecttohostnode1port 22: connection timed out

/etc/hosts文件中的映射地址-检查主机名是否有误

2 .主机密钥验证失败。

“……(是/否)? 时间直接回到了车上。 应该说是

jdk的安装下载

可以直接访问官方网站下载适合自己机器的jdk。

注:必须打开访问许可协议解压缩

tarzxvfjdk-8u 131-Linux-x64.tar.gz//解压缩JDK压缩包

配置环境变量vi /etc/profile //配置环境变量将具有解压缩后的jdk的路径:添加到空位置

export Java _ home=/opt/softwares/JDK1.8.0_ 131 export class path=. $ Java _ home/JRE/lib/rt.jar 33333330 启用HP dxyz : $ path source/etc/profile//环境变量以验证jdk安装是否已完成

显示Ava-version//JDK版本信息

可以使用scp命令将jdk发送到其馀的虚拟机,并修改/etc/profile

或者重复同样操作

hadoop安装和配置1 .下载

进入hadoop官方网站下载。

2 .解冻

tar zxvf hadoo

p-3.0.0-alpha4.tar.gz

3.为了方便可以配置一下环境变量

vi /etc/profile export HADOOP_HOME=/usr/local/hadoopexport PATH=.:$HADOOP_HOME/hpdxyz:$HADOOP_HOME/shpdxyz:$JAVA_HOME/hpdxyz:$PATH source /etc/profile // 使环境变量生效

验证安装 :

hadoop version


4.配置文件
在hadoop文件加下:

cd etc/hadoop/ // 此目录下含有hadoop的配置件

需要配置的文件有 :
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
(单节点及伪分布式可查看官网)

vi hadoop-env.sh # The java implementation to use.#export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=/opt/softwares/jdk1.8.0_131

因为hadoop是在JVM上运行的所以要在其配置文件中指定jdk的path

vi core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property></configuration>

第一个fs.defaultFS是指定hdfs的URI
第二个hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这个路径中

vi hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/hdfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node1:9001</value> </property> <property> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property></configuration>

dfs.replication 副本个数,默认是3
dfs.namenode.secondary.http-address 为了保证整个集群的可靠性secondarnamenode配置在其他机器比较好
dfs.http.address 进入hadoop web UI的端口

vi mapred-site.xml <configuration> <property> <name>mapred.job.tracker.http.address</name> <value>0.0.0.0:50030</value> </property> <property>--><!-- Put site-specific property overrides in this file. --><configuration> <property> <name>mapred.job.tracker.http.address</name> <value>0.0.0.0:50030</value> </property> <property> <name>mapred.task.tracker.http.address</name> <value>0.0.0.0:50060</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value> /usr/local/hadoop/etc/hadoop, /usr/local/hadoop/share/hadoop/common/*, /local/hadoop/share/hadoop/common/lib/*, /usr/local/hadoop/share/hadoop/hdfs/*, /usr/local/hadoop/share/hadoop/hdfs/lib/*, /usr/local/hadoop/share/hadoop/mapreduce/*, /usr/local/hadoop/share/hadoop/mapreduce/lib/*, /usr/local/hadoop/share/hadoop/yarn/*, /usr/local/hadoop/share/hadoop/yarn/lib/* </value></property></configuration>

mapreduce框架的参数
最后一个是hadoop jar包的路径

vi yarn-site.xml <configuration><!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8099</value></property></configuration>

NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
yarn 的webUI端口是8099

vi workers // datanode节点设置 node1node2

5.发送到其余虚拟机中或是重复相同操作

启动hadoop hdfs namenode -format // 首次启动格式化namenodestart-all.sh // 启动hadoop集群jps // 查看JVM运行的程序



遇到的问题 :


在hadoop/shpdxyz/
vi start-dfs.sh
vi stop-dfs.sh
添加
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

当报错YARN_RESOURCEMANAGER_USER时
vi start-yarn.sh
vi stop-yarn.sh
添加
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

50070端口配置文件中设置了,却还是不能访问

vi /etc/selinux/config

修改

#This file controls the state of SELinux on the system.#SELINUX= can take one of these three values:#enforcing - SELinux security policy is enforced.#permissive - SELinux prints warnings instead of enforcing.#disabled - No SELinux policy is loaded.SELINUX=enforcing

SELINUX的属性改为disabled

namenode启动了datanode没有启动(多次格式化namenode造成的)

在master的hadoop路径下 :

vi hdfs/name/current/VERSION

拷贝clusterID
datanode的hadoop路径下 :

vi hdfs/data/current/VERSION

替换掉datanode的clusterID
开启不需要format了

参考:
http://hadoop.apache.org/docs/r3.0.0-alpha4/hadoop-project-dist/hadoop-common/ClusterSetup.html
http://hadoop.apache.org/docs/r3.0.0-alpha4/hadoop-project-dist/hadoop-common/SingleCluster.html

推荐:http://blog.csdn.net/mxfeng/article/details/72770432?locationNum=15&fps=1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。