HADOOP之3节点集群

1.apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop一些C++的本地库,所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译

2.本次搭建使用了2.7.1,hadoop2.7.1是稳定版。

3.节点包括了namenode的高可用,jobtracker的高可用,zookeeper高可用集群(后期更新)

架构图:


主机信息


IP


主机名


MASTER

  1. 168.1.114

Mycat


SLAVE

  1. 168.1.107

Haproxy


SLAVE

  1. 168.1.108

Haproxy_slave


Hadoop版本


Version2.7.1


JDK版本


Version1.7.0_55

##三个节点的/etc/hosts一致

  • 添加ssh 之间的互信:sshkeygen -t rsa

###若是原来存在的建议删除重新设置一次

# cd

#cd .ssh

#rm –rf ./*

1、  生成authorized_keys 文件

cat id_rsa.pub>> authorized_keys

2、  把其他节点的id_rsa.pub的内容拷贝到第一节点的authorized_keys文件里

3、 然后把第一节点的authorized_keys复制到2个SLAVE中去:

#scpauthorized_keys  [email protected]:~/.ssh/

scp authorized_keys  [email protected]:~/.ssh/

4、 设置.ssh的权限为700,authorized_keys的权限为600

#chmod 700 ~/.ssh

#chmod 600 ~/.ssh/authorized_keys

  • 设置jdk环境变量vim/etc/profile

#注意jdk和hadoop包的路径,3个节点配置文件一致

export JAVA_HOME=/usr/local/jdk

export HADOOP_INSTALL=/usr/local/hadoop

设置环境立即生效:source /etc/profile

#ln –s /usr/local/jdk/bin/*/usr/bin/

测试jdk是否OK

java -version

java version "1.7.0_09-icedtea"

OpenJDK Runtime Environment(rhel-2.3.4.1.el6_3-x86_64)

OpenJDK 64-Bit Server VM (build 23.2-b09,mixed mode)

  • 配置、添加用户hadoop

# useradd hadoop

#配置之前,先在本地文件系统创建以下文件夹:

/home/hadoop/tmp、/home/dfs/data、/home/dfs/name,3个节点一样

Mkdir /home/hadoop/tmp

mkdir /home/hadoop/dfs/data -p

mkdir /home/hadoop/dfs/name -p

#hadoop的配置文件在程序目录下的etc/hadoop,主要涉及的配置文件有7个:都在/hadoop/etc/hadoop文件夹下,可以用gedit命令对其进行编辑。

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
/usr/local/hadoop /etc/hadoop/yarn-env.sh
/usr/local/hadoop /etc/hadoop/slaves
/usr/local/hadoop/etc/hadoop/core-site.xml
/usr/local/hadoop/etc/hadoop/hdfs-site.xml
/usr/local/hadoop/etc/hadoop/mapred-site.xml
/usr/local/hadoop/etc/hadoop/yarn-site.xml

1、  修改hadoop-env.sh,设置jdk路径,在第25行中修改:

export JAVA_HOME=/usr/local/jdk

2、  修改core-site.xml

fs.default.name是NameNode的URI。hdfs://主机名:端口/hadoop.tmp.dir:Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://haproxy:9000</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

<property>

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

<value>file:/home/hadoop/tmp</value>

<description>abase for othertemporary directories</description>

</property>

<property>

<name>hadoop.proxyuser.spark.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.spark.groups</name>

<value>*</value>

</property>

3、配置  hdfs-site.xml 文件-->>增加hdfs配置信息(namenode、datanode端口和目录位置)

dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

<configuration>

<property>

<name> dfs.namenode.name.dir </name>

<value>/home/dfs/name/name1</value>

<final>true</final>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/dfs/data/data1</value>

<final>true</final>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

<final>true</final>

</property>

</configuration>

4、mapred-site.xml文件

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>haproxy:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>haproxy:19888</value>

</property>

</configuration>

4、修改yarn-site.xml

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shufle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>haproxy:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>haproxy:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>haproxy:8035</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>haproxy:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>haproxy:8088</value>

</property>

5、配置masters和slaves主从结点

6、格式文件系统

这一步在主结点master上进行操作

报错

./hdfs: /usr/local/jdk/bin/java: /lib/ld-linux.so.2: bad ELFinterpreter: No such file or directory

yum install glibc.i686

#cd /usr/local/hadoop/bin/

./hdfs namenode -format

SHUTDOWN_MSG: Shutting down NameNode athaproxy/192.168.1.107

7、启动主节点

#/usr/local/hadoop/sbin/start-dfs.sh

问题1

启动的时候日志有:

It‘s highly recommended that you fix the library with‘execstack -c <libfile>‘, or link it with ‘-z noexecstack‘.

经过修改主要是环境变量设置问题:

#vi /etc/profile或者vi~/.bash_profile

export HADOOP_HOME=/usr/local/hadoop

exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

问题2

WARN util.NativeCodeLoader: Unable toload native-hadoop library for your platform... using builtin-java classeswhere applicable

测试发现:

/usr/local/hadoop/bin/hadoop fs -ls /

16/11/16 16:16:42 WARN util.NativeCodeLoader: Unable to loadnative-hadoop library for your platform... using builtin-java classes whereapplicable

ls: Call From haproxy/192.168.1.107 to haproxy:9000 failed onconnection exception: java.net.ConnectException: Connection refused; For moredetails see:  http://wiki.apache.org/hadoop/ConnectionRefused

 

增加调试信息设置

$ export HADOOP_ROOT_LOGGER=DEBUG,console

启动日志:标志红色的需要按上面的错误提示做相应的处理

16/11/19 15:45:27 WARNutil.NativeCodeLoader: Unable to load native-hadoop library for yourplatform... using builtin-java classes where applicable

Starting namenodes on [mycat]

The authenticity of host ‘mycat(127.0.0.1)‘ can‘t be established.

RSA key fingerprint is3f:44:d6:f4:31:b0:5b:ff:86:b2:5d:87:f2:d9:b8:9d.

Are you sure you want to continueconnecting (yes/no)? yes

mycat: Warning: Permanently added‘mycat‘ (RSA) to the list of known hosts.

mycat: starting namenode, logging to/usr/local/hadoop/logs/hadoop-root-namenode-mycat.out

mycat: Java HotSpot(TM) Client VMwarning: You have loaded library /usr/local/hadoop/lib/native/libhadoop.so.1.0.0which might have disabled stack guard. The VM will try to fix the stack guardnow.

mycat: It‘s highly recommended that you fix the library with‘execstack -c <libfile>‘, or link it with ‘-z noexecstack‘.

haproxy: starting datanode, logging to/usr/local/hadoop/logs/hadoop-root-datanode-haproxy.out

haproxy_slave: starting datanode,logging to /usr/local/hadoop/logs/hadoop-root-datanode-haproxy_slave.out

haproxy: /usr/local/hadoop/bin/hdfs: line 304:/usr/local/jdk/bin/java: No such file or directory

haproxy: /usr/local/hadoop/bin/hdfs: line 304: exec:/usr/local/jdk/bin/java: cannot execute: No such file or directory

haproxy_slave: /usr/local/hadoop/bin/hdfs:/usr/local/jdk/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such fileor directory

haproxy_slave:/usr/local/hadoop/bin/hdfs: line 304: /usr/local/jdk/bin/java: Success

Starting secondary namenodes [0.0.0.0]

The authenticity of host ‘0.0.0.0(0.0.0.0)‘ can‘t be established.

RSA key fingerprint is3f:44:d6:f4:31:b0:5b:ff:86:b2:5d:87:f2:d9:b8:9d.

Are you sure you want to continueconnecting (yes/no)? yes

0.0.0.0: Warning: Permanently added‘0.0.0.0‘ (RSA) to the list of known hosts.

0.0.0.0: starting secondarynamenode,logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-mycat.out

0.0.0.0: Java HotSpot(TM) Client VMwarning: You have loaded library/usr/local/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stackguard. The VM will try to fix the stack guard now.

0.0.0.0: It‘s highly recommended thatyou fix the library with ‘execstack -c <libfile>‘, or link it with ‘-znoexecstack‘.

16/11/19 15:46:01 WARNutil.NativeCodeLoader: Unable to load native-hadoop library for yourplatform... usi

 

##到此3主备集群OK

时间: 2024-10-22 21:07:23

HADOOP之3节点集群的相关文章

Cassandra配置多节点集群

上一篇文章 Cassandra入门指南中,我们已经配置好了一个单节点集群,接下来,我们要往这个集群中多加几个节点,看看多个节点是如何同时工作的. Cassandra节点之间交换信息是通过一种叫做Gossip(暂时不知道该翻译为哪个专有名词合适,暂且意会吧)的机制.但是要想让一个消息传递到一个新加入的节点,至少还需要知道另外一个节点,这个节点叫做种子(Seed).通常我们会选择一小部分相对稳定的节点作为种子节点,但这并不是硬性规定.务必要确保每个种子节点至少能感知另外一个种子节点.记住,这样做的目

Hadoop学习笔记(二)设置单节点集群

本文描述如何设置一个单一节点的 Hadoop 安装,以便您可以快速执行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS). 参考官方文档:Hadoop MapReduce Next Generation - Setting up a Single Node Cluster. Hadoop版本:Apache Hadoop 2.5.1 系统版本:CentOS 6.5,内核(uname -r):2.6.32-431.el6.x86_64 系统必备组件 支

Hadoop学习笔记(两)设置单节点集群

本文描写叙述怎样设置一个单一节点的 Hadoop 安装.以便您能够高速运行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS). 參考官方文档:Hadoop MapReduce Next Generation - Setting up a Single Node Cluster. Hadoop版本号:Apache Hadoop 2.5.1 系统版本号:CentOS 6.5.内核(uname -r):2.6.32-431.el6.x86_64 系统必备

Hyperledger Fabric 1.0 从零开始(六)——创建Fabric多节点集群

4:创建Fabric多节点集群 4.1.配置说明 首先可以根据官方Fabric自带的e2e_cli列子中的集群方案来生成我们自己的集群,与案例不同的是我们需要把容器都分配到不同的服务器上,彼此之间通过网络来进行通信,网络构建完成后则进行相关的channel和chaincode操作. 笔者目前申请了五台服务器,所有的服务器均是按照上述e2e_cli环境构建与测试步骤配置.计划其中四台服务器运行peer节点,另外一台服务器运行orderer节点,为其它四个节点提供order服务. 虚拟机具体参数如下

ELK开发部署(1):安装Elasticsearch组建单服务器多节点集群

ELK简介 最近有个需求搭建一套日志系统用于集成几个业务系统的日志提供快速的检索功能,目前是用Log4net存数据库+Error级别发邮件方式,也算简单暴力好用,但历史日志的模糊查询确实很慢,所以使用ELK是比较理想的解决方案.三年前写过两篇文章log4net.NoSql +ElasticSearch 实现日志记录和log4net.redis+logstash+kibana+elasticsearch+redis 实现日志系统,感觉有点凌乱,这次借着项目需要重新整理一下.参考ELK不权威指南可以

redis单节点集群

一.概念 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存.事件发布或订阅.高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串.哈希.列表.队列.集合结构直接存取,基于内存,可持久化. 二.redis的应用场景有哪些 1.会话缓存(最常用) 2.消息队列,比如支付 3.活动排行榜或计数 4.发布.订阅消息(消息通知) 5.商品列表.评论列表等 1.redis安装: # wget http://download.redis.io/releases/re

kubeadm搭建kubernetes(v1.13.1)单节点集群

kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,本篇文章使用kubeadm搭建一个单master节点的k8s集群. 节点部署信息 节点主机名 节点IP 节点角色 操作系统 k8s-master 10.10.55.113 master centos7.6 k8s-node1 10.10.55.114 node centos7.6 节点说明 master:控制节点.kube-apiserver负责API服务,kube-controller-manager负责

ELK日志框架(1):安装Elasticsearch组建单服务器多节点集群

原文:ELK日志框架(1):安装Elasticsearch组建单服务器多节点集群 ELK简介 最近有个需求搭建一套日志系统用于集成几个业务系统的日志提供快速的检索功能,目前是用Log4net存数据库+Error级别发邮件方式,也算简单暴力好用,但历史日志的模糊查询确实很慢,所以使用ELK是比较理想的解决方案.三年前写过两篇文章log4net.NoSql +ElasticSearch 实现日志记录和log4net.redis+logstash+kibana+elasticsearch+redis

Kubernetes群集之:二进制部署单etcd,多节点集群

Kubernetes集群部署 1.官方提供的三种部署方式2.Kubernetes平台环境规划3.自签SSL证书4.Etcd数据库群集部署 5.Node安装Docker6.Flannel容器集群网络部署7.部署Master组件8.部署Node组件9.部署一个测试示例10.部署Web UI(Dashboard)11.部署集群内部DNS解析服务(CoreDNS) 官方提供的三种部署方式: minikube: Minikube是一个工具,可以在本地快速运行单点的Kubernetes,仅用于尝试Kuber