文档章节

Fedora20+Hadoop2.2.0完全分布式安装

开拓者-2017
 开拓者-2017
发布于 2014/09/01 19:05
字数 2180
阅读 223
收藏 0

注:此篇博文只是自己在Fedora20平台上安装hadoop2.2.0的一些随心笔记。写下来,希望大家少走弯路。

以下是我的集群配置:

Fedora20-64bit

hadoop-2.2.0-64bit

jdk1.7.0_65

一、安装配置运行hadoop所需的jdk

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

在电脑上安装配置:

tar -xvzf jdk-7u65-linux-x64.tar.gz 
cp -r jdk1.7.0_65 /usr/java/jdk1.7.0_65

我这里将jdk安装在了/usr/java文件夹下,名字叫做jdk1.7.0_65。接下来,配置jdk的环境变量:

vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin

手动配置默认jdk,在终端依次输入以下命令:

sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_43/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_43/bin/javac 300
sudo update-alternatives --install /usr/bin/jps jps /usr/java/jdk1.6.0_43/bin/jps 300
sudo update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.6.0_43/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/java/jdk1.6.0_43/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.6.0_43/bin/javap 300

继续在终端执行以下命令,选择我们安装的jdk,根据列出来的选择项选择我们安装的jdk:

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws

之后,在终端输入:

source vi /etc/profile

使修改的环境变量生效。

继续输入java -version,如果输出结果如下类似,则说明环境变量配置完好。

java -version
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

,到了这里,还需要配置集群的ssh免密码登陆。

在主节点(NameNode)的终端执行命令:

ssh-keygen -t rsa

然后一路Enter,  产生秘钥位于/root/.ssh/文件夹下

然后将主节点产生的公有秘钥发送到其他节点

ssh-copy-id –i ~/.ssh/id_rsa.pub hadoop@slave0x

实际上就是将NameNode生成的公有秘钥发送到集群的其他各个节点,然后在主节点ssh slave0x节点即可,第一次可能需要输入密码,之后就可以实现无密码登陆了。

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

这条命令是可以实现本机ssh无密码登陆的。

二、下载hadoop2.2.0安装包,可以直接去官网下载,但是在官网上面下载的2.2.0版本的hadoop只支持32bit系统的,并不       支持64位操作系统。如果直接在官网下载的话,还需要根据自己的情况将hadoop的源码编译成为64位的。

      官网下载地址下载地址:http://apache.fayea.com/apache-mirror/hadoop/common/

三、hadoop2.2.0的编译好的适用64位的版本,已经编译好,在群共享里了,我也存到网盘上了,大家可以下载。

链接: http://pan.baidu.com/s/1pJmGVm7 密码: 9rdf

如果自己有兴趣的话,可以自己编译一次,其实也不难,就是用到的软件有点多,具体的编译步骤,接下来会补上,也可以自己去google,这里先介绍在Fedora20平台上的hadoop2.2.0安装。

注:如果运行的hadoop-2.2.0版本不是64位的,会出现下面的错误:

在使用./sbin/start-dfs.sh或./sbin/start-all.sh启动时会报出这样如下警告:
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
....
Java: ssh: Could not resolve hostname Java: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
....

这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。

网上的解决办法有两种:

(1)在64位系统上重新编译hadoop

(2)hadoop-env.shyarn-env.sh中添加如下行: 

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native  

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"  

注:/home/hadoop/hadoop-2.2.0为自定义的下载hadoop文件的解压路径

四、首先将编译好的hadoop2.2.0在主节点即namenode解压安装。我这里是安装在主文件夹目录下,即/home/hadoop目录下。

五、接下来Fedora20系统有些坑爹的地方,可能这也是这个系统为什么比较安全的原因吧。Fedora20每个电脑用于通信的端口22,这个端口竟然在配置文件中是被注释掉的,当然你也可以自己定义端口。

打开sudo vi /etc/ssh/ssh_config 

 #port 22   
 #protocol 2,1

将这两行前边的#去掉

六、Fedora20集群电脑之间的通信还需要考虑到防火墙的关系,如果不把防火墙关闭,通信是完不成的。

注:

如果不将防火墙关闭,在启动nodemanager的时候会出现以下错误:

java.net.NoRouteToHostException: No Route to Host from
localhost.localdomain/nodeip to ip:8031 failed on
socket timeout exception: java.net.NoRouteToHostException: No route to
host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost
..................省略了好多东西 Caused by: java.net.NoRouteToHostException: No
route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native
Method) ..................省略了好多东西 at
org.apache.hadoop.ipc.Client.getConnection(Client.java:1399) at
org.apache.hadoop.ipc.Client.call(Client.java:1318) ... 19 more

还有,关闭linux系统的防火墙方法不一样,下面介绍介绍几个:

(1)对于ubuntu关闭防火墙:

sudo ufw disable

如果你要防火墙可以运行:

sudo apt-get remove iptables

(2)对于fedora关闭防火墙:

sudo systemctl stop firewalld.service

实在不行的话,可以直接禁用:

 sudo systemctl disable firewalld.service

七、在开启hadoop集群之前确保ssh服务已经开启。

在Fedora20上查看和开启ssh服务的命令:

查看现在运行的ssh服务状态:

sudo systemctl status sshd.service

开启ssh服务:

sudo systemctl enable sshd.service
sudo systemctl start sshd.service

八、配置hadoop2.2.0

1.配置hadoop的环境变量

sudo vi /etc/profile

在profile文件末尾配置hadoop2.2.0的环境变量如下:

export HADOOP_HOME=/home/hadoop/hadoop-2.2.0
export PAHT=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_LOG_DIR=/usr/zkt/hadoop2.2.0/hadoop-2.2.0/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

注:在64位系统上需要加入最后的两行配置信息

2.修改hadoop2.2.0的配置文件(在hadoop-2.2.0/etc/hadoop文件夹下)

 1、修改hadoop-env.sh 、yarn-env.sh 确保hadoop运行所需要的java环境
    # The java implementation to use.
    export JAVA_HOME=/usr/java/jdk1.7.0_65
    2、修改core-site.xml文件  定义文件系统的配置
<configuration>
 <property>  
    <name>fs.default.name</name>  
        <value>hdfs://master:9000/</value>  
 </property>  
 <property>
         <name>hadoop.tmp.dir</name>
         <value>/home/hadoop/hadoop2.2.0/tmp</value>
  </property>  
 </configuration>
  3、修改hadfs-site.xml  定义名称节点和数据节点
  <configuration>
<property>  
        <name>dfs.datanode.data.dir</name>  
        <value>/home/hadoop/hadoop2.2.0/hdf/data</value>  
        <final>true</final>  
   </property>  
     <property>  
       <name>dfs.namenode.name.dir</name>  
       <value>/home/hadoop/hadoop2.2.0/hdf/name</value>  
       <final>true</final>  
   </property>  
   <property>  
        <name>dfs.replication</name>  
        <value>2</value>  
   </property>
 <property>  
            <name>dfs.permissions</name>  
            <value>false</value>  
    </property> 
</configuration>
4、修改mapred-site.xml   Configurations for MapReduce Applications
   <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>master:10020</value>  
    </property>  
  <property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>master:19888</value>  
    </property>  
  5、修改yarn-site.xml文件    
     该文件主要用于:
     1、Configurations for ResourceManager and NodeManager:
     2、Configurations for ResourceManager:
     3、Configurations for NodeManager:
    4、Configurations for History Server (Needs to be moved elsewhere):
    <property>  
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
    </property>  
 <property>  
        <name>yarn.resourcemanager.address</name>  
        <value>master:8032</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.scheduler.address</name>  
        <value>master:8030</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>master:8031</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>master:8033</value>  
    </property>  
      <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>master:8088</value>  
    </property>

九、创建第八步多出来的文件夹

data  tmp  name  log    mkdir -r  /home/hadoop/hadoop2.2.0/hdf/data 等

十、为上边创建的文件夹赋予权限,否则可能会出现无文件创建或无法执行写权限

进去到root用户:

su - root

chown -R hadoop:hadoop /usr/zkt/hadoop2.2.0 (不明白的可以查看chown命令)

或者切换到hadoop用户下 通过chmod -R 777 data 赋权限

十一、将配置好的hadoop-2.2.0依次复制到集群的其他节点

scp -r /home/hadoop/hadoop-2.2.0 hadoop@slave01:~/

按照之前在主节点做过的事情,在其他的节点也都做一遍,也可以自己远程登陆执行。主要的是端口22和防火墙。

十二、下面打开集群,测试。

1.hadoop的namenode的初始化

bin/hdfs namenode -format

2.启动hadoop的各项服务

sbin/start-dfs.sh
sbin/start-yarn.sh

3.查看启动的节点进程

jps

(1)主节点(NameNode)出现以下的服务,表示主节点hadoop启动成功

ResourceManager
SecondaryNameNode
NameNode
Jps

(2)从节点(DataNode)出现以下的服务,表示从节点slave的hadoop服务启动成功:

DataNode
NodeManager
Jps

(3)hadoop2.x还有一个jobhistory服务

启动:

sbin/mr-jobhistory-daemonn.sh start historyserver

(4)可以在相应的web端口查看启动的hadoop服务

查看各节点状态

master:50070


可能有很多疏漏的地方,大家可以多多提提改进意见!

© 著作权归作者所有

上一篇: Django模块的安装
下一篇: JavaScript基础 (一)
开拓者-2017
粉丝 38
博文 151
码字总数 301625
作品 0
大兴
程序员
私信 提问
完全分布式(四)Sqoop 安装部署及操作示例

本次采用完全分布式系列的hadoop集群,安装配置过程详细参见 完全分布式集群(二)hadoop2.6.5安装部署 Hive在分布式集群上的部署配置参见 完全分布式集群(三)hive-2.1.1安装部署 检查本地...

PeakFang-BOK
2018/10/12
148
0
Hadoop单机模式部署

一、Hadoop部署模式 单机模式:默认情况下运行为一个单独机器上的独立Java进程,主要用于调试环境 伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的J...

结束的伤感
2016/04/20
0
0
hadoop学习笔记2---hadoop的三种运行模式

1、单机模式 安装简单,在一台机器上运行服务,几乎不用做任何配置,但仅限于调试用途。没有分布式文件系统,直接读写本地操作系统的文件系统。 2、伪分布式模式 在单节点上同时启动namenod...

断臂人
2018/06/12
0
0
hadoop本地(独立)模式-安装

本人博客开始迁移,博客整个架构自己搭建及编码http://www.cookqq.com/listBlog.action 本地(独立)模式 Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且...

cookqq
2013/04/11
3K
0
hbase分布式集群搭建

hbase和hadoop一样也分为单机版、伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建。 hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop的完全集群环...

纯洁的虫纸
2017/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java发送html模板的高逼格邮件

最近做了一个监测k8s服务pod水平伸缩发送邮件的功能(当pod的cpu/内存达到指定阈值后会水平扩展出多个pod、或者指定时间内pod数应扩展到指定数量),一开始写了个格式很low的邮件,像下面这样...

码农实战
22分钟前
7
0
php-fpm配置文件详解/MariaDB密码重置、慢查询日志

来源:https://blog.csdn.net/Powerful_Fy php-fpm主配置文件路径:/usr/local/php-fpm/etc/php-fpm.conf #位于安装php安装目录下的etc/目录中,该文件中最后一行将配置文件指向:include=/...

asnfuy
27分钟前
7
0
川普给埃尔多安和内堪尼亚胡的信

任性 https://twitter.com/netanyahu/status/1186647558401253377 https://edition.cnn.com/2019/10/16/politics/trump-erdogan-letter/index.htm...

Iridium
48分钟前
12
0
golang-mysql-原生

db.go package mainimport ("database/sql""time"_ "github.com/go-sql-driver/mysql")var (db *sql.DBdsn = "root:123456@tcp(127.0.0.1:3306)/test?charset=u......

李琼涛
今天
5
0
编程作业20191021092341

1编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时 间。使用#define或const创建一个表示60的符号常量或const变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0的值...

1李嘉焘1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部