Win10达标利用子系统搭建hadoop本地开发环境以及大问题解决。Centos7长建筑zookeeper集群。

linux上又不能安装qq等必须软件,首先修改/ect/hostname

Win10达成利用子系统搭建hadoop本地开发条件暨广大问题解决

centos7暨事先的版本都不相同,修改主机名在/ect/hostname 和/ect/hosts
这半只文件决定

说明

心灵鼓舞的备选学hadoop,没悟出困难重重,具体多坑?
Hadoop对微软如此不友善,
原本打算安装于docker上得以吧,一追寻,一个学科都并未,我???,
那么装个虚拟机吧,配置范围了自身之设想,
这就是说将个对系吧,linux上又无克设置qq等要软件,
尽管如此为只是编译Hadoop源码为windows版本,但是hadoop那么基本上生态环境,难道我要是列一个且编译?
你恐怕会见以代码打包为jar包再发送至服务器上运行,但是及时多了大量的调剂工作,而且浪费了大气年华。
自己用这windows能怎么惩罚?甚至曾想换个地下苹果(忍住了)。

估计我颇微软自己为发现这样下来无法盈利,只能抢给上兄弟Ubuntu来填坑。
遵循学科利用win10于带的Ubuntu子系统来布局Hadoop运行环境。

第一修改/ect/hostname

要求

系统:win10(只有win10得安装子系统)

vi /ect/hostname

步骤

打开后的情节是:

第一步:安装Ubuntu子系统

开拓windows商店,搜索Ubuntu,找到后点击安装,等待安装了即可。
安装完成后,为了以后能加速布局速度,安包源为阿里源。

localhost.localdomain

第二步:配置Ubuntu子系统

  • 装主机名(不是要的)

分层系主机名默认下windows宿主机的名字,如果您从没有改了亮的当是一样错字符,为了便于开发,你当修改主机名。通过设置->系统->关于->重命名这台电脑双重改主机名。

  • 设置root密码

sudo passwd root
  • 安默认登录用户

以能便于开发,可以装Ubuntu的默认登录用户为即登录win10的用户称,因为您出时凡因目前登录用户执行顺序的,所以为了避免权限问题,推荐你这么做。
如当前我win10的用户也manlier,那就算设置默认用户为manlier,如果手上ubuntu中尚无拖欠用户,会被你创造。

在Power shell 中执行

ubuntu config --default-user <username>
  • 安装ssh服务

Ubuntu 默认安装了ssh服务,如果无装,执行

sudo apt-get install openssh-client
sudo apt-get install openssh-server
  • 启动ssh服务

sudo service ssh start

设若碰到问题,重新安装ssh服务

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

还运行suddo service ssh --full-restart翻开是否曾启动成功

  • 配置ssh端口

ssh端口默认是22如泣如诉端口,该端口在win10备受一度为sshProxy服务占了,你可以关闭该服务。也堪透过下的通令于Ubuntu中改ssh端口。

修改/etc/ssh/sshd_configPort 22呢其他端口

vi /etc/ssh/sshd_config

重启ssh服务

sudo service ssh --full-restart

正文选择第一栽,即直接关闭sshProxy服务。若您选第二种植,之后要配备Hadoop集群的ssh端口。

  • 布置免密登录

显然,Hadoop需要树立于ssh的免密服务之上,因此需要展开ssh的公钥登录配置。

修改sshd_config文本,主要更改下面几行

UsePrivilegeSeparation no
PermitRootLogin no         #如果你确实要用root方式登录的话设为yes
PasswordAuthentication yes

在Ubuntu中重启ssh服务

sudo service ssh --full-restart

执行ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa变动密钥,注意不要采用dsa加密,它不安全吧不再让支持。

执行ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@localhost拿公钥发送到Ubuntu,期间要输入一蹩脚(之后虽未需要了)用户的密码。

至今免密服务已经配备了。运行ssh localhost查看是否非需要密码登录,若出现问题,请查看输出及屏幕的日志。

拿它们修改成你想如果的名字就是可,比如: niukou.com

第三步:安装Hadoop

在布局完ssh后,你可直接以官方文档受的说明,在linux环境下安装Hadoop了,这里列有第一步骤。

  • 安装JDK

Hadoop 依赖JDK,首先需设置Java,这里装Oracle Java 8

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
  • 配置JAVA_HOME

查JAVA安装路径

sudo update-alternatives --config java

  Selection    Path                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-oracle/jre/bin/java   1081      auto mode
* 1            /usr/lib/jvm/java-8-oracle/jre/bin/java   1081      manual mode

看到JDK路径为/usr/lib/jvm/java-8-oracle

/etc/environment着首先实施上加如下内容:

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

履新环境变量

source /etc/enviroment
  • 下载Hadoop并解压

cd /opt
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz
tar xzvf hadoop-2.9.0.tar.gz
  • 设置HADOOP_HOME路径

/etc/environment文本中首先履上加HADOOP_HOME变量,为了输入指令时的好着想,你可以投入到PATH环境变量中。

HADOOP_HOME="/opt/hadoop-2.9.0"
PATH="$HADOOP_HOME/bin:..."

source /etc/environment
  • 设置JAVA_HOME路径

修改etc/hadoop/hadoop-env.sh文件被的JAVA_HOME变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
  • 盖私自分布模式配置Hadoop

修改etc/hadoop/core-site.xml文本内容如下:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

修改etc/hadoop/hdfs-site.xml文件内容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  • 配置YARN(若你用YARN作为资源管理器)

修改etc/hadoop/mapred-site.xml如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

修改etc/hadoop/yarn-site.xml如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  • 格式化文件系统

bin/hdfs namenode -format
  • 被 NameNode 和 DataNode 守护进程

sbin/start-dfs.sh
  • 开启YARN

sbin/start-yarn.sh
  • 翻开是否启动成功

输入jps命令,若以下进程都启动了,说明启动成功

1984 SecondaryNameNode
2212 ResourceManager
2376 Jps
1738 DataNode
1612 NameNode
2334 NodeManager
  • 创用户目录

hadoop fs -mkdir /user
hadoop fs -mkdir /user/<username>

从那之后windows上之hadoop环境就搭建好了,你得打开localhost:50070翻看是否启动成功。

吓了,现在您可以idea或其它开发工具进行付出暨调剂了,而未用每次都起包及服务器上运行了(鼓掌)

保存退出

广泛错误

  • 用户权限问题

若果你在Ubuntu中盖root身份启动了hadoop,并且创办了文件,那么这个文件就属root。而以开发环境被,你是作其他用户运行程序的,没有权力访问该文件,要拜访文件,可经以下指令更改文件所有者:

sudo hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

OWNER:GROUP就是用户:所属组,例如更改为manlier:supergroup拿文件之主人改为了supergroup组下之manlier用户

  • datanode进程未启动

查看logs/hadoop-<username>-datanode-<hostname>.log文本检查错误。

比方出现java.io.IOException: Incompatible
clusterIDs,则说明您的data进程的集群id与name进程的集群id不同等,解决办法如下:

找到你的hdfs的公文存放路径,若你没指定,默认为/tmp/hadoop-<username>,彻底剔除其,重新格式化文件系统,重开hadoop即可,查看切实由。

  • 出现 Unable to load native-hadoop library for your platform…

翻开时是不是配备好了HADOOP_HOME环境变量

echo $HADOOP_HOME

一经出口为空,你需要在/etc/enviroment文本中安Hadoop目录:

HADOOP_HOME=your_hadoop_path

连重新更新环境变量

source /etc/enviroment

下一场修改/ect/hosts文件

vi /ect/hosts

开拓之后的情是:

127.0.0.1   localhost localhost.localdomain localhost4
localhost4.localdomain4
::1         localhost localhost.localdomain localhost6
localhost6.localdomain6

然后您以中加一行:

IP   niukou.com

封存退出,然后还开机器,这时候你便可由此hostname来访问这大机器的服务了

 

 

 

CentOS 下SSH无密码登录的布局

 

不久前求学Hadoop。它要求各级节点内通过SSH无密码登录,配置SSH的时候费了千篇一律旗功夫,记录下来,以备忘。

安排SSH无密码登录要3步:

    1.生成为公钥和私钥

    2.导入公钥到说明文件,更改权限

    3.测试

 

1.生变为公钥和私钥

  

 

Shell代码  

  1. ssh-keygen -t rsa

  
   默认在 ~/.ssh目录生成稀单文本:
    id_rsa      :私钥
    id_rsa.pub  :公钥

2.导入公钥到说明文件,更改权限

    2.1 导入本机

Shell代码  

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

 

    2.2 导入要无密码登录的服务器

        首先以公钥复制到服务器

Shell代码  

  1. scp ~/.ssh/id_rsa.pub xxx@host:/home/xxx/id_rsa.pub  

        然后,将公钥导入到说明文件,这同步之操作以服务器上进行

Shell代码  

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

 

    2.3 在服务器上改变权限

      

Shell代码  

  1. chmod 700 ~/.ssh
  2. chmod 600 ~/.ssh/authorized_keys  

   

3.测试

    ssh host,第一不好登录或需要yes确认,之后就可以一直登录了。

 

 

1、集群部署介绍

1.1 Hadoop简介

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop
Distributed Filesystem)和MapReduce(Google
MapReduce的开源实现)为核心的Hadoop为用户提供了网底层细节透明的分布式基础架构。

对于Hadoop的集群来讲,可以分成两生类角色:Master和Salve。一个HDFS集群是出于一个NameNode和若干独DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间与客户端对文件系统的看操作;集众多中之DataNode管理存储的数。MapReduce框架是由一个独立运行在主节点上之JobTracker和周转在每个从节点的TaskTracker共同做的。主节点负责调度构成一个功课的有任
务,这些职责分布于不同之打节点上。主节点监控她的实践情况,并且还履行前的挫折任务;从节点才负责由主节点指派的天职。当一个Job被交给时,JobTracker接收到提交作业以及配置信息后,就见面以配备信息相当分发给从节点,同时调度任务并监控TaskTracker的施行。

自点的牵线好见见,HDFS和MapReduce共同构成了Hadoop分布式系统体系布局的中坚。HDFS在集群达落实分布式文件系统,MapReduce在集群达实现了分布式计算和职责处理。HDFS在MapReduce任务处理过程中提供了文本操作与贮等支持,MapReduce在HDFS的根底及贯彻了职责的分发、跟踪、执行等工作,并采访结果,二者相互作用,完成了Hadoop分布式集群的显要职责。

1.2 环境说明

本身之环境是在虚拟机中布置的,Hadoop集群被连4个节点:1单Master,2只Salve,节点内局域网连接,可以彼此ping通,节点IP地址分布如下:

 

虚拟机系统

机器名称

IP地址

Ubuntu 13.04

Master.Hadoop

192.168.1.141

Ubuntu 9.11

Salve1.Hadoop

192.168.1.142

Fedora 17

Salve2.Hadoop

192.168.1.137

 

Master机器主要安排NameNode和JobTracker的角色,负责总管分布式数据和释疑任务之执行;3只Salve机器配置DataNode 和TaskTracker的角色,负责分布式数据存储和任务之实施。其实当还应有1单Master机器,用来当备用,以预防Master服务器宕机,还有一个备用马上启用。后续经验积累得阶段后补上同台备用Master机器(可经过安排文件修改备用机器数)。

 
  注意:由于hadoop要求有所机器上hadoop的部署目录结构要求一律(因为于起步时仍同主节点相同的目录启动其它任务节点),并且还产生一个同等之用户名账户。参考各种文档上说的凡有所机器都建立一个hadoop用户,使用这个账户来贯彻无密码验证。这里为有利于,分别以三雅机器及都又树立一个hadoop用户。

1.3 环境布置

Hadoop集群要按1.2小节表格所示进行布置,下面介绍如何改机器名称及配备hosts文件,以方便使用。

留神:我的虚拟机都利用NAT方式连接网络,IP地址是机关分配的,所以这里就动用自动分配的IP地址而无特地修改为一些IP地址。

(1)修改时机械名称

比方我们发现我们的机器的主机名不是我们怀念使的。

1)在Ubuntu下修改机器名称

改文件/etc/hostname里的值即可,修改成功后为此hostname命令查看时主机名是否设置成。

opebet官网 1

   
  另外为能科学解析主机名,最好为改/etc/hosts文件里对应之主机名 
   
  opebet官网 2

2)在Fedora下修改机器名称

通过对”/etc/sysconfig/network”文件修改中”HOSTNAME”后面的价,改成为我们规定之名称。

指令:vi /etc/sysconfig/network,修改如下: 
 
  opebet官网 3 
     
  opebet官网 4

    同样为能够是分析主机名,最好呢改/etc/hosts文件里对应的主机名。

(2)配置hosts文件(必须)

“/etc/hosts”这个文件是为此来安排主机将故底DNS服务器信息,是记载LAN内继续的每主机的应和[HostName  IP]就此底。当用户以拓展网络连接时,首先查找该文件,寻找针对性诺主机名对应的IP地址。

咱如果测试两玉机械里知否连通,一般用”ping 机器的IP”,如果想就此”ping 机器的主机名”发现搜索不显现该名的机械(这也就算是为什么在修改主机名的又最好修改该公文中对应之主机名),解决的方式就是改”/etc/hosts”这个文件,通过把LAN内的各国主机的IP地址及HostName的次第对准承诺写副这个文件的下,就可化解问题。

像:机器也”Master.Hadoop:192.168.1.141″对机器也”Salve1.Hadoop:192.168.1.142″用命令”ping”记性连接测试。测试结果如下: 
 
  opebet官网 5

自打上图中的价,直接指向IP地址进行测试,能够ping通,但是针对主机名进行测试,发现并未ping通,提示”unknown
host——未知主机”,这时查看”Master.Hadoop”的”/etc/hosts”文件内容会发觉中间没有”192.168.1.142  Slave1.Hadoop”内容,故而本机器是无法对机械的主机名吧”Slave1.Hadoop” 解析。

每当拓展Hadoop集群配置中,需要在”/etc/hosts”文件中上加集群中装有机器的IP与主机名,这样Master与具有的Slave机器之间不光可以由此IP进行通信,而且还可以通过主机名展开通信。所以于装有的机上之”/etc/hosts”文件中都使填补加如下内容:

192.168.1.141 Master.Hadoop

192.168.1.142 Slave1.Hadoop

192.168.1.137 Slave2.Hadoop

一声令下:vi /etc/hosts,添加结果如下: 
opebet官网 6

今昔咱们以进展针对机器也”Slave1.Hadoop”的主机名展开ping通测试,看是否能够测试成功。

opebet官网 7

从今达图被我们已经能够为此主机名进行ping通了,说明我们刚才添加底始末,在局域网内能够进行DNS解析了,那么现在剩下的事就是是当旁的Slave机器上开展相同之配置。然后开展测试。

1.4 所待软件

(1)JDK软件

 
  下载地址:http://www.Oracle.com/technetwork/java/javase/index.html

    JDK版本:jdk-7u25-linux-i586.tar.gz

(2)Hadoop软件

    下载地址:http://hadoop.apache.org/common/releases.html

    Hadoop版本:hadoop-1.1.2.tar.gz

2、SSH无密码验证配置

Hadoop运行过程遭到需管住远端Hadoop守护进程,在Hadoop启动以后,NameNode是经SSH(Secure
Shell)来启动同终止各个DataNode上之各种护理进程的。这即务须在节点内实行令的时是无需要输入密码的花样,故我们要安排SSH运用无密码公钥认证的款式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上吧能使用SSH无密码登录到 NameNode。

顾:如果您的Linux没有装SSH,请首先安装SSH

Ubuntu下安装ssh:sudo apt-get install openssh-server

Fedora下安装ssh:yum install openssh-server

2.1 SSH基本原理和用法

1)SSH基本原理

    SSH之所以能够管安全,原因在它们采取了公钥加密。过程如下:

(1)远程主机收到用户之登录要,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己之私钥,解密登录密码,如果密码正确,就允许用户登录。

2)SSH基本用法

    假如用户称也java,登录远程主机名吧linux,如下命令即可:

    $ ssh java@linux

 
  SSH的默认端口是22,也就是说,你的登录要会送上远程主机的22端口。使用p参数,可以改是端口,例如修改为88端口,命令如下:

    $ ssh -p 88 java@linux

    注意:如果出现错误提示:ssh: Could not resolve hostname linux: Name
or service not known,则是为linux主机未补加进随主机的Name
Service中,故未可知鉴别,需要在/etc/hosts里补充加进该主机和相应之IP即可:

    linux    192.168.1.107

2.2 配置Master无密码登录所有Salve

1)SSH无密码原理

Master(NameNode |
JobTracker)作为客户端,要贯彻无密码公钥认证,连接受服务器Salve(DataNode
|
Tasktracker)上时常,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到具有的Slave上。当Master通过SSH连接Salve时,Salve就会变一个随机数并就此Master的公钥对自由数进行加密,并发送给Master。Master收到加密数之后更就此私钥解密,并以解密数拨传被Slave,Slave确认解密数无误后就同意Master进行连接了。这即是一个公钥认证过程,其间不待用户手工输入密码。

2)Master机器上安无密码登录

a. Master节点利用ssh-keygen命令生成一个无密码密钥对。

每当Master节点上实行以下命令:

ssh-keygen –t rsa –P ”

运转后了解其保存路径时一直回车采用默认路径。生成的密钥对:id_rsa(私钥)和id_rsa.pub(公钥),默认存储于”/home/用户名/.ssh”目录下。 
    opebet官网 8

翻开”/home/用户名/”下是否发”.ssh”文件夹,且”.ssh”文件下是否发生零星独刚刚产的无密码密钥对。

 
  opebet官网 9

b. 就在Master节点上举行如下配置,把id_rsa.pub追加到授权的key里面去。

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

opebet官网 10

查看下authorized_keys的权位,如果权力不对则用如下命令设置该公文之权杖:

chmod 600 authorized_keys

c. 用root用户登录修改SSH配置文件”/etc/ssh/sshd_config”的下列内容。

自我批评下几乎推行前面”#”注释是否撤销掉:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile  %h/.ssh/authorized_keys # 公钥文件路径 
 
  opebet官网 11

设置完毕之后记得重开SSH服务,才能够而刚刚设置中。

 
  opebet官网 12 
 

剥离root登录,使用普通用户验证是否设置成。

opebet官网 13 

于达到图备受得知无密码登录本级已经安装了,接下去的事情是把公钥复制所

有的Slave机器上。

    注意:有时候在测试时或者会见油然而生谬误: Agent admitted failure to sign
using the key.解决办法是:ssh-add  ~/.ssh/id_rsa ,如下所示:

  opebet官网 14

 
  d.使用ssh-copy-id命令将公钥传送到长途主机及(这里坐Slave1.Hadoop吗例)。

opebet官网 15

e. 测试是否无密码登录其他机器成功。

opebet官网 16

顶之结束,我们经过5步已经落实了于”Master.Hadoop”到”Slave1.Hadoop”SSH无密码登录,下面就重复上面的手续把剩余的有数高(Slave2.Hadoop和Slave3.Hadoop)Slave服务器进行配置。这样,我们就做到了”配置Master无密码登录所有的Slave服务器”。

连着下去配置有Slave无密码登录Master,其及Master无密码登录所有Slave原理同,就是拿Slave的公钥追加至Master的”.ssh”文件夹下的”authorized_keys”中,记得是加(>>)。

顾:期间可能会见油然而生部分问题如下:

(1)如果当ssh连接时出现错误“ssh:connect to host port 22: Connection
refused”,如下图所示: 
opebet官网 17

虽说恐是为远程登录的那么尊机械没有安装ssh服务要设置了没有拉开ssh服务,下面到Slave3.Hadoop主机进行测试: 
opebet官网 18

为一劳永逸,设置系统开行时打开服务:#
systemctl enable sshd.service 
opebet官网 19

(2)如果在于是命令ssh-copy-id时发现搜索不顶拖欠令“ssh-copy-id:Command not
found”,则恐是ssh服务的版本太没有之缘故,比如使您的机械是RedHat系统便可能该问题,解决办法是:手动复制本地的pubkey内容及长途服务器,命令如下:

 cat ~/.ssh/id_rsa.pub | ssh hadoop@Master.Hadoop ‘cat >>
~/.ssh/authorized_keys’

欠令等价于下面两个命:

①每当该地机械上实行:scp ~/.ssh/id_rsa.pub hadoop@Master.Hadoop:/~

②顶长途机器及执行:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

opebet官网 20

3、Java环境设置

享有的机及都要装JDK,现在就算优先在Master服务器安装,然后另外服务器按照步骤重复进行即可。安装JDK以及部署环境变量,需要以”root”的位置进行。

3.1 安装JDK

首先用root身份登录”Master.Hadoop”后当”/usr”下创办”java”文件夹,再将”jdk-7u25-linux-i586.tar.gz”复制到”/usr/java”文件夹着,然后解压即可。查看”/usr/java”下面会发现差不多了一个号称吧”jdk1.7.0_25″文件夹,说明我们的JDK安装了,删除”jdk-7u25-linux-i586.tar.gz”文件,进入下一个”配置环境变量”环节。

3.2 配置环境变量

(1)编辑”/etc/profile”文件

 
  编辑”/etc/profile”文件,在后头加加Java的”JAVA_HOME”、”CLASSPATH”以及”PATH”内容如下:

# set java environment

export JAVA_HOME=/usr/java/jdk1.7.0_25/

export JRE_HOME=/usr/java/jdk1.7.0_25/jre

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

或者

# set java environment

export JAVA_HOME=/usr/java/jdk1.7.0_25/

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

如上两种意思同样,那么我们便挑第1种植来进行设置。

opebet官网 21

(2)使配置生效

保留并退出,执行下发号施令使其配备立即生效。

source /etc/profile 或 . /etc/profile

opebet官网 22

3.3 验证安装成功

布了并生效后,用底发号施令判断是否成。

java -version

opebet官网 23

从今高达图被获悉,我们规定JDK已经设置成功。

3.4 安装剩余机器

这儿用普通用户hadoop通过scp命令格式把”/usr/java/”文件复制到其他Slave上面,剩下的事就是是以任何的Slave服务器上仍上图的步调配置环境变量和测试是否安装成功,这里坐Slave1.Master为条例:

scp -r /usr/java seed@Slave1.Master:/usr/ 

专注:有的机器库函数版本较逊色,可能安装不了赛版本的JDK,比如有些Redhat9,此时匪可以选取于逊色版本的JDK进行设置,因为有集众多被之JDK版本要同(经过测试),有三三两两种方式而缓解:一凡是舍弃该机器,选用外一样光能装该本的JDK的对讲机;二是选项没有版本的JDK,在拥有机器上重新安装。

4、Hadoop集群安装

具备的机及都使装hadoop,现在即优先在Master服务器安装,然后另外服务器按照步骤重复进行即可。安装及配备hadoop需要盖”root”的身份展开。

4.1 安装hadoop

先是用root用户登录”Master.Hadoop”机器,将下载的”hadoop-1.1.2.tar.gz”复制到/usr目录下。然后上”/usr”目录下,用底发号施令将”hadoop-1.1.2.tar.gz”进行解压,并拿该重命名也”hadoop”,把欠文件夹的读权限分配为普通用户hadoop,然后去”hadoop-1.0.0.tar.gz”安装包。

cd /usr

tar –xzvf hadoop-1.1.2.tar.gz

mv hadoop-1.1.2 hadoop

chown –R hadoop:hadoop hadoop
#将文件夹”hadoop”读权限分配为hadoop普通用户

rm -rf hadoop-1.1.2.tar.gz

末在”/usr/hadoop”下面创建tmp文件夹,并将Hadoop的装置路径上加至”/etc/profile”中,修改”/etc/profile”文件,将以下语句添加到终极,并要其收效(.
/etc/profile):

# set hadoop path

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

opebet官网 24

4.2 配置hadoop

(1)配置hadoop-env.sh

欠”hadoop-env.sh”文件在”/usr/hadoop/conf”目录下。

以文书中修改下面内容:

export JAVA_HOME=/usr/java/jdk1.7.0_25

opebet官网 25

Hadoop配置文件在conf目录下,之前的本子的配置文件着重是Hadoop-default.xml和Hadoop-site.xml。
由于Hadoop发展很快,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三片段,配置文件为受分成了三个core-
site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是立在 HDFS角度上配置文件;core-site.xml和mapred-site.xml是立在MapReduce角度上配备文件。

 (2)配置core-site.xml文件

修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS
master(即namenode)的地方和端口号。

<configuration>

    <property>

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

        <value>/usr/hadoop/tmp</value>

        (备注:请预在 /usr/hadoop 目录下起 tmp 文件夹)

        <description>A base for other temporary
directories.</description>

    </property>

<!– file system properties –>

    <property>

        <name>fs.default.name</name>

       <value>hdfs://192.168.1.141:9000</value>

    </property>

</configuration>

备注:如无布置hadoop.tmp.dir参数,此时系统默认的旋目录也:/tmp/hadoo-hadoop。而此目录在历次重启后都见面受删掉,必须还履行format才行,否则会拧。

opebet官网 26

(3)配置hdfs-site.xml文件

修改Hadoop中HDFS的部署,配置的备份方式默认为3。

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

     
  (备注:replication 是多少副本数量,默认为3,salve少于3玉就会报错)

    </property>

<configuration>

 opebet官网 27

(4)配置mapred-site.xml文件

修改Hadoop中MapReduce的部署文件,配置的凡JobTracker的地点和端口。

<configuration>

    <property>

        <name>mapred.job.tracker</name>

        <value>http://192.168.1.141:9001&lt;/value&gt;

    </property>

</configuration>

opebet官网 28

(5)配置masters文件

发生星星点点种方案:

    (1)第一种

    修改localhost为Master.Hadoop

    (2)第二种

    去掉”localhost”,加入Master机器的IP:192.168.1.141

啊保证起见,启用第二种,因为万一忘记配置”/etc/hosts”局域网的DNS失效,这样即便见面现出意外的缪,但是要是IP配对,网络通畅,就可知由此IP找到相应主机。

opebet官网 29

(6)配置slaves文件(Master主机特有)

    有三三两两栽方案:

    (1)第一种

    去丢”localhost”,每行添加一个主机名,把剩余的Slave主机名都填上。

    例如:添加式如下:

Slave1.Hadoop

Slave2.Hadoop

    (2)第二种

    去丢”localhost”,加入集众多中负有Slave机器的IP,也是每行一个。

    例如:添加花样如下

192.168.1.142

192.168.1.137

故和增长”masters”文件一律,选择第二种艺术。

opebet官网 30

今日以Master机器上之Hadoop配置就收了,剩下的虽是安排Slave机器上之Hadoop。

无限简便的点子是用 Master上安排好的hadoop所于文书夹”/usr/hadoop”复制到独具的Slave的”/usr”目录下(实际上Slave机器上之slavers文件是匪必要的,
复制了吧尚未问题)。用脚发号施令格式进行。(备注:此时用户可以吗普通用户也可呢root) 
 

scp -r /usr/hadoop root@服务器IP:/usr/

譬如:从”Master.Hadoop”到”Slave1.Hadoop”复制配置Hadoop的文件。

scp -r /usr/hadoop root@Slave1.Hadoop:/usr/

因为root用户展开复制,当然不管是用户root还是普通用户,虽然Master机器上的”/usr/hadoop”文件夹用户hadoop有权力,但是Slave1上的hadoop用户可从不”/usr”权限,所以没有开创文件夹的权位。所以不管哪个用户展开拷贝,右面都是”root@机器 IP”格式。因为咱们只是建立由了普通用户的SSH无密码连接,所以用root进行”scp”时,扔提示给您输入”Slave1.Hadoop” 服务器用户root的密码。

opebet官网 31

 
  查看”Slave1.Hadoop”服务器的”/usr”目录下是否已经存在”hadoop”文件夹,确认就复制成功。查看结果如下:

opebet官网 32 

由上图备受透亮,hadoop文件夹确实都复制了,但是我们发现hadoop权限是root,所以我们今天只要被”Slave1.Hadoop”服务器上的用户hadoop添加对”/usr/hadoop”读权限。

为root用户登录”Slave1.Hadoop”,执行下发号施令。

chown -R hadoop:hadoop(用户名:用户组) hadoop(文件夹)

继以”Slave1
.Hadoop”上改”/etc/profile”文件,将以下语句添加到终极,并要其行(source
/etc/profile):

# set hadoop environment

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

如若未晓怎么设置,可以查阅前面”Master.Hadoop”机器的”/etc/profile”文件之部署,到此结束在平雅Slave机器上之Hadoop配置就得了了。剩下的事宜就是是仿把结余的几华Slave机器进行安排Hadoop。

4.3 启动与证明

(1)格式化HDFS文件系统

当”Master.Hadoop”上使普通用户hadoop进行操作。(备注:只需要一不善,下次开行不再用格式化,只待start-all.sh)

hadoop namenode -format

opebet官网 33 

于上图备受懂得我们就成功格式化了,但是美受到欠缺就是起了一个警戒,从网上得知此警示并无影响hadoop执行,但是也出艺术化解,详情看后边的”常见问题FAQ”。

(2)启动hadoop

于起步前关闭集众多中保有机器的防火墙,不然会并发datanode开后还要自行关闭。使用下发号施令启动。

start-all.sh

opebet官网 34

得经过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再开行jobtracker,然后启动tasktracker1,tasktracker2,…。

起步 hadoop成功后,在 Master 中之 tmp 文件夹中生成了 dfs 文件夹,在Slave 中之 tmp 文件夹着全都非常成了 dfs 文件夹和 mapred 文件夹。

(3)验证hadoop

(1)验证方式同样:用”jps”命令

每当Master上之所以 java自带的略器jps查看过程。

opebet官网 35

于Slave2上用jps查看过程。

opebet官网 36

使当查Slave机器中发现”DataNode”和”TaskTracker”没有起时,先翻转日志的,如果是”namespaceID”不同等问题,采用”常见问题FAQ6.2″进行解决,如果是”No
route to host”问题,采用”常见问题FAQ6.3″进行解决。

(2)验证方式二:用”hadoop dfsadmin -report”

故而这令可以翻Hadoop集群的状态。

opebet官网 37

 

 

 

4.4 网页查看集群

(1)访问”http://192.168.1.141:50030″

opebet官网 38

(2)访问”http://192.168.1.142:50070″

opebet官网 39

5、常见问题FAQ

5.1 关于 Warning: $HADOOP_HOME is deprecated.

hadoop安装收尾后敲入hadoop命令时,老是提示是警示:

    Warning: $HADOOP_HOME is deprecated.

由此查hadoop-1.1.2/bin/hadoop脚本和”hadoop-config.sh”脚本,发现脚本中对HADOOP_HOME的环境变量设置做了判断,其实历来无需要设置HADOOP_HOME环境变量。

釜底抽薪方案一:编辑”/etc/profile”文件,去掉HADOOP_HOME的变量设定,重新输入hadoop
fs命令,警告消失。

釜底抽薪方案二:编辑”/etc/profile”文件,添加一个环境变量,之后警告消失:

    export HADOOP_HOME_WARN_SUPPRESS=1

5.2 解决”no datanode to stop”问题

当自己停Hadoop时意识如下信:

   no datanode to stop

由:每次namenode
format会重新创设一个namenodeId,而tmp/dfs/data下涵了上次format下之id,namenode
format清空了namenode下的数目,但是从未清空datanode下的数码,导致启动时失败,有零星栽缓解方案:

率先种植缓解方案如下:

1)先删除”/usr/hadoop/tmp”

rm -rf /usr/hadoop/tmp

2)创建”/usr/hadoop/tmp”文件夹

mkdir /usr/hadoop/tmp

3)删除”/tmp”下盖”hadoop”开头文件

rm -rf /tmp/hadoop*

4)重新格式化hadoop

 

hadoop namenode -format

5)启动hadoop

start-all.sh

用第一栽方案,有种植不好处就是原先集群达之重要性数据全没有了。假如说Hadoop集群已经运行了一段时间。建议以第二种植。

第二种植方案如下:

1)修改每个Slave的namespaceID使其与Master的namespaceID一致。

  或者

2)修改Master的namespaceID使其与Slave的namespaceID一致。

拖欠”namespaceID”位于”/usr/hadoop/tmp/dfs/name/current/VERSION”文件被,前面蓝色的可能基于实际情形变化,但晚给红色一般是免转换的。

例如:查看”Master”下的”VERSION”文件

opebet官网 40

自己建议利用第二种,这样方便快捷,而且还会防止误删。

5.3 Slave服务器中datanode启动后又自行关闭

查日志发下如下错误opebet官网。

    ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:
java.io.IOException: Call to … failed on local exception:
java.net.NoRouteToHostException: No route to host

釜底抽薪方案是:关闭防火墙

5.4 从本地往hdfs文件系统上传文件

并发如下错误:

INFO hdfs.DFSClient: Exception in createBlockOutputStream
java.io.IOException: Bad connect ack with firstBadLink

INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023

WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable
to create new block.

解决方案是:

1)关闭防火墙

2)禁用selinux

    编辑 “/etc/selinux/config”文件,设置”SELINUX=disabled”

5.5 安全模式造成的不当

并发如下错误:

org.apache.hadoop.dfs.SafeModeException: Cannot delete …, Name node is
in safe mode

在分布式文件系统启动的时候,开始之时节会来安全模式,当分布式文件系统处于安全模式的状况下,文件系统中之始末未允修改为不允许删除,直到安模式了。安全模式要是以系统启动的时检查各个DataNode上数据块的管事,同时依据政策必要的复制或者去部分数据块。运行期通过命令也可以进安全模式。在执行进程中,系统启动的时刻失去修改和去文件呢会出安全模式不同意修改的错提示,只待等待一会儿即可。

解决方案是:关闭安全模式

hadoop dfsadmin -safemode leave

5.6 解决Exceeded MAX_FAILED_UNIQUE_FETCHES

并发谬误如下:

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out

程序中待开辟多独文件,进行剖析,系统一般默认数量是1024,(用ulimit
-a可以见到)对于正规使用是够了,但是对程序来讲,就最好少了。

缓解方案是:修改2单文件。

1)”/etc/security/limits.conf”

    vi /etc/security/limits.conf

加上:

    soft nofile 102400

    hard nofile 409600

2)”/etc/pam.d/login”

    vim /etc/pam.d/login

添加:

    session required /lib/security/pam_limits.so

对第一只问题我正下答案:

当即是reduce预处理等shuffle时取得已成功的map的出口失败次数超过上限造成的,上限默认为5。引起此问题之艺术可能会见发生那么些种,比如网络连接不正规,连接超时,带富比差和端口阻塞等。通常框架内网络状态较好是未见面起这个错误的。

5.7 解决”Too many fetch-failures”

起这题目重要性是结点间的连片不敷健全。

化解方案是:

1)检查”/etc/hosts”

求本机ip 对应服务器名

要求而包含有的服务器ip +服务器名

2)检查”.ssh/authorized_keys”

务求涵盖有服务器(包括该自己)的public key

5.8 处理速度特别之暂缓

并发map很快,但是reduce很缓慢,而且一再起”reduce=0%”。

解决方案如下:

结缘解决方案5.7,然后修改”conf/hadoop-env.sh”中之”export
HADOOP_HEAPSIZE=4000″

5.9 解决hadoop OutOfMemoryError问题

并发这种特别,明显是jvm内存不够得由。

化解方案如下:要修改所有的datanode的jvm内存大小。

    Java –Xms 1024m -Xmx 4096m

貌似jvm的顶深内存以相应也总内存大小的一半,我们采用的8G内存,所以设置为4096m,这无异值可能照样不是极致妙的价值。

再次多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13