Hadoop2.0全分布式集群架构

Hadoop安装

1.  创建hadoop用户组;

$sudo addgrouphadoop 

记下这里为hadoop用户设置的密码,后面使用hadoop用户登录时需要用到。

 

2.  创建hadoop用户;

 $sudo adduser -ingroup hadoop hadoop 

 

3.  给hadoop用户添加权限,打开/etc/sudoers文件;

     $sudo gedit /etc/sudoers

给hadoop用户赋予root用户同样的权限。

在  root ALL=(ALL:ALL)   ALL下添加如下内容:

hadoop ALL=(ALL:ALL)   ALL   

 

4.  配置环境变量

$sudo gedit /etc/profile

在文件的末尾加上如下内容,保存并关闭文件

 

#Java Environment

export JAVA_HOME=/usr/jdk

exportJRE_HOME=$JAVA_HOME/jre

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

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

 

#Hadoop Environment

export HADOOP_HOME=/usr/hadoop

export PATH=$HADOOP_HOME/bin:$PATH

使设置生效:到此部JDK的配置就都完成了

$source /etc/profile

为保证正确性,进行简单的测试

$java -version

输出:

Java version"1.8.0"

Java(TM) SE RuntimeEnvironment (build 1.8.0)

Java HotSpot(TM) ServerVM

 

5.  修改机器名

打开/etc/hostname文件;

 $sudo gedit /etc/hostname 

将/etc/hostname文件中的Ubuntu改为对应机器,如主节点中,修改为"master",重启生效。

修改/etc/hosts文件

 $sudo gedit /etc/hosts

改为如下所示,并且将每台机器的IP设置为固定IP:

127.0.0.1

localhost

192.168.0.1

Master

192.168.0.2

Slave1

192.168.0.3

Slave2

 

6.  配置SSH无密码访问

$sudo apt-get install openssh-server

首先要转换成hadoop用户,执行以下命令:

 $sudo su - hadoop 

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

创建ssh-key,,这里我们采用rsa方式;

 $ ssh-keygen -t rsa -P "" 

请注意,ssh-kengen 是用连字符连着的,千万不要分开。问题如下:

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

创建授权文件authorized_keys

 进入~/.ssh/目录下,发现开始是没有authorized_keys文件的,可以使用以下两种方法:

(1) 将id_rsa.pub追加到authorized_keys授权文件中;

      $cd ~/.ssh 

     $cat id_rsa.pub >> authorized_keys

(2) 复制id_rsa.pub 为 authorized_keys

      $ cp ~/.ssh/id_rsa.pub~/.ssh/authorized_keys 

登录localhost;

$ ssh localhost 

显示welcome…后面还有很多字不记得了 就是成功了。

执行退出命令(exit或CTRL+D);

使Master登录一个Slave都是免密码

scp   authorized_keys slave1:/home/hadoop/.ssh/

 

7.  同步集群中所有节点的时间

1.  安装ntpdate工具

#sudo apt-get installntpdate

2.  设置系统时间与网络时间同步

#sudo ntpdatecn.pool.ntp.org

3.  将系统时间写入硬件时间

#sudohwclock –w

4.将硬件时间同步到系统时间

#sudohwclock –s

 

8.  配置Hadoop

hadoop-env.sh

export JAVA_HOME=/usr/jdk

yarn-env.sh

export JAVA_HOME=/usr/jdk

exportHADOOP_HOME=/usr/hadoop

mapred-en.sh

export JAVA_HOME=/usr/jdk

core-site.xml

      

              fs.default.name(指定NameNode主机名和请求端口号)

              hdfs://localhost:9000

      

      

              hadoop.http.staticuser.user(指定HDFS的默认用户名)

              hdfs

      

              io.file.buffer.size

              131072

      

              hadoop.tmp.dir(运行时临时文件存放位置)

              file:/usr/hadoop/hdfs/tmp

      

              hadoop.proxyuser.hadoop.hosts

              *

      

              hadoop.proxyuser.hadoop.groups

              *

      

              fs.checkpoint.period

              3600

      

              fs.checkpoint.size

              67108864

      


 

hdfs-site.xml

              dfs.replication(HDFS默认为文件系统中的每个文件保存        3                  3份副本,以作冗余备份)

      

              dfs.permissions(HDFS的权限问题)

              false

      

              dfs.namenode.name.dir(NameNode的数据存储目录)

              file:/usr/hadoop/hdfs/namenode

      

              fs.checkpoint.dir(SecondaryNameNode的数据存储目录)

              file:/usr/hadoop/hdfs/secondarynamenode

      

              fs.checkpoint.edits.dir

              file:/usr/hadoop/hdfs/secondarynamenode

      

              dfs.datanode.data.dir(DataNode的数据存储目录)

              file:/usr/hadoop/hdfs/datanode

              dfs.namenode.http-address

              localhost:50070

      

              dfs.namenode.secondary.http-address

              secondarynamenode:50090

      

              dfs.webhdfs.enabled

              true

      

 

mapred-site.xml

              mapreduce.framework.name(指定MR框架名,告诉MR

              yarn    它将作为YARN、local、classic的应用程序运行)

      

              mapreduce.jobhistory.address(MR应用程序通过内部协议

              localhost:10020  发送作业历史记录的主机名和端口号)

      

              mapreduce.jobhistory.webapp.address(管理员或用户用来

              localhost:19888查看已完成MR工作的主机名和端口号)

      

              yarn.app.mapreduce.am.staging-dir(MR作业在HDFS中创

              /mapreduce                  建临时数据的数据暂存区)

      

 

yarn-site.xml

              yarn.nodemanager.aux-services

              mapreduce_shuffle(告诉MapReduce如何进行Shuffle)

      

              yarn.nodemanager.aux-services.mapreduce.shuffle.class(使

              org.apache.hadoop.mapred.ShuffleHadnler用哪个类来完成)

      


yarn.nodemanager.recovery.enabled

 默认为false,设置为true启用特性 




yarn.nodemanager.recovery.dir

默认为$hadoop.tmp.dir/yarn-nm-recovery,NM保存container状态的本地目录




yarn.nodemanager.address

 默认${yarn.nodemanager.hostname}:0,即随机使用临时端口,官方解释是"The address of the container manager in the NM"。NodeManager不能对RPC server使用临时端口,因为NM在重启后会更换端口,会打断重启前的container与NodeManager的连接,设置后可以固定使用同一个的端口。 



              yarn.web-proxy.address

              yarn_proxy:YARN_PROXY_PORT

      

              yarn.resourcemanager.scheduler.address

              localhost:8030

      

              yarn.resourcemanager.resource-tracker.address

              localhost:8031

      

              yarn.resourcemanager.address

              localhost:8032

      

              yarn.resourcemanager.admin.address

              localhost:8033

      

              yarn.resourcemanager.webapp.address

              localhost:8088

      

              mapreduce.job.ubertask.enable

              true  (小作业JVM重用机制)

      

9.       添加Slaves

打开${HADOOP_HOME}/etc/hadoop/slaves文件,添加作为slave的主机名,一行一个。

例如:

1、slave1

2、slave2

3、slave3

 

10.    添加Secondarynamenode

打开${HADOOP_HOME}/etc/hadoop/masters文件,

添加作为secondarynamenode的主机名,一行一个。

 

11.     

调整Java堆大小

大多数进程的默认堆大小为1GB,因为我们将可能运行在一个和标准服务器相比只有有限资源的工作站上,所以要调整堆的大小。(不要忘记删除每一行前面的“#”)。

hadoop-env.sh

HADOOP_HEAPSIZE=500

HADOOP_NAMENODE_INIT_HEAPSIZE=”500”

 

mapred-env.sh

HADOOP_JOB_HISTORYSERVER_HEAPSIZE=250

 

yarn-env.sh

JAVA_HEAP_MAX=Xmx500m

YANR_HEAPSIZE=500

 

12.    向各个节点复制Hadoop,JDK,Eclipse等

scp– r  hadoop/  slave1:/usr/

scp– r  jdk/ slave1:/usr/

scp– r  eclipse/  slave1:/usr/

 

13.    关闭防火墙

sudoufw disable

serviceiptables stop / start

serviceiptables status

14.    运行Hadoop

进Hadoop目录下,格式化HDFS文件系统,初次运行Hadoop时一定要有该操作,

    $ cd /usr/hadoop/

    $ bin/hdfs namenode -format 

      

启动sbin/start-all.sh

进入sbin目录下, $./start-all.sh        

关闭:同目录下  $./stop-all.sh

检测hadoop是否启动成功

    $ jps 

Web查看

http://localhost:8080/  ResourceManager

http://localhost:10020/  JobHistory

http://localhost:19888/  已完成MR

http://localhost:50070/  NameNode

 

 

 

 

 

 

 

 

你可能感兴趣的:(Hadoop,hadoop,分布式,集群,架构)