Win10达到利用子系统搭建hadoop本地开发条件与周边问题迎刃而解。Centos7增建筑zookeeper集群。

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命令查看时主机名是否设置成。

图片 1

   
  另外为能够正确分析主机名,最好与否改/etc/hosts文件里对应的主机名 
   
  图片 2

2)在Fedora下修改机器名称

由此对”/etc/sysconfig/network”文件修改中”HOSTNAME”后面的值,改成为我们确定之称。

命:vi /etc/sysconfig/network,修改如下: 
 
  图片 3 
     
  图片 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”记性连接测试。测试结果如下: 
 
  图片 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,添加结果如下: 
图片 6

今日咱们当进行针对机器也”Slave1.Hadoop”的主机名展开ping通测试,看是不是会测试成功。

图片 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”目录下。 
    图片 8

查阅”/home/用户名/”下是否生”.ssh”文件夹,且”.ssh”文件下是否有少数个刚刚产的无密码密钥对。

 
  图片 9

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

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

图片 10

查看下authorized_keys的权能,如果权力不对则应用如下命令设置该公文的权限:

chmod 600 authorized_keys

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

反省下几乎实践前面”#”注释是否吊销掉:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对证明方法

AuthorizedKeysFile  %h/.ssh/authorized_keys # 公钥文件路径 
 
  图片 11

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

 
  图片 12 
 

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

图片 13 

起高达图中查出无密码登录本级已经装了,接下去的事体是把公钥复制所

有的Slave机器上。

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

  图片 14

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

图片 15

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

图片 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”,如下图所示: 
图片 17

则恐是因远程登录的那台机械没有装ssh服务或者安装了并未被ssh服务,下面到Slave3.Hadoop主机进行测试: 
图片 18

为一劳永逸,设置系统开行时开服务:#
systemctl enable sshd.service 
图片 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

图片 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栽来拓展设置。

图片 21

(2)使配置生效

封存并退出,执行下发号施令使该配备立即生效。

source /etc/profile 或 . /etc/profile

图片 22

3.3 验证安装成功

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

java -version

图片 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

图片 24

4.2 配置hadoop

(1)配置hadoop-env.sh

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

每当文件被修改下面内容:

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

图片 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才行,否则会错。

图片 26

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

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

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

     
  (备注:replication 是数量副本数量,默认为3,salve少于3华即会见报错)

    </property>

<configuration>

 图片 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>

图片 28

(5)配置masters文件

产生星星点点种方案:

    (1)第一种

    修改localhost为Master.Hadoop

    (2)第二种

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

为保起见,启用第二栽,因为万一忘记配置”/etc/hosts”局域网的DNS失效,这样即便见面冒出奇怪的谬误,但是如果IP配对,网络通畅,就能够经过IP找到相应主机。

图片 29

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

    有点儿栽方案:

    (1)第一种

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

    例如:添加式如下:

Slave1.Hadoop

Slave2.Hadoop

    (2)第二种

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

    例如:添加花样如下

192.168.1.142

192.168.1.137

案由以及添加”masters”文件一律,选择第二种植办法。

图片 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的密码。

图片 31

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

图片 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

图片 33 

打达成图被透亮我们已打响格式化了,但是美被欠缺就是出新了一个警示,从网上得知这个警示并无影响hadoop执行,但是也起措施缓解,详情看后边的”常见问题FAQ”。

(2)启动hadoop

以启动前关闭集众多被有机器的防火墙,不然会起datanode开后而自行关闭。使用下发号施令启动。

start-all.sh

图片 34

足由此以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再起步jobtracker,然后启动tasktracker1,tasktracker2,…。

开行 hadoop成功后,在 Master 中之 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹着皆十分成了 dfs 文件夹和 mapred 文件夹。

(3)验证hadoop

(1)验证措施同样:用”jps”命令

当Master上用 java自带的多少器jps查看过程。

图片 35

在Slave2上就此jps查看过程。

图片 36

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

(2)验证措施二:用”hadoop dfsadmin -report”

据此此命令可以翻Hadoop集群的状态。

图片 37

 

 

 

4.4 网页查看集群

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

图片 38

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

图片 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”文件

图片 40

自己建议采取第二种,这样方便快捷,而且还能防止误删。

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

翻开日志发下如下错误。

    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

 

相关文章