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

<configuration>

       <property>

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

              <value>hdfs://localhost:9000</value>

       </property>

       <property>

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

              <value>hdfs</value>

       </property>

<property>

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

              <value>131072</value>

       </property>

<property>

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

              <value>file:/usr/hadoop/hdfs/tmp</value>

       </property>

<property>

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

              <value>*</value>

       </property>

<property>

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

              <value>*</value>

       </property>

<property>

              <name>fs.checkpoint.period</name>

              <value>3600</value>

       </property>

<property>

              <name>fs.checkpoint.size</name>

              <value>67108864</value>

       </property>


</configuration>

 

hdfs-site.xml

<configuration>

<property>

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

       </property>

<property>

              <name>dfs.permissions</name>(HDFS的权限问题)

              <value>false</value>

       </property>

<property>

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

              <value>file:/usr/hadoop/hdfs/namenode</value>

       </property>

<property>

              <name>fs.checkpoint.dir</name>(SecondaryNameNode的数据存储目录)

              <value>file:/usr/hadoop/hdfs/secondarynamenode</value>

       </property>

<property>

              <name>fs.checkpoint.edits.dir</name>

              <value>file:/usr/hadoop/hdfs/secondarynamenode </value>

       </property>

<property>

              <name>dfs.datanode.data.dir</name>(DataNode的数据存储目录)

              <value>file:/usr/hadoop/hdfs/datanode</value>

</property>

<property>

              <name>dfs.namenode.http-address</name>

              <value>localhost:50070</value>

       </property>

<property>

              <name>dfs.namenode.secondary.http-address</name>

              <value>secondarynamenode:50090</value>

       </property>

<property>

              <name>dfs.webhdfs.enabled</name>

              <value>true</value>

       </property>

</configuration>

 

mapred-site.xml

<configuration>

<property>

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

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

       </property>

<property>

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

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

       </property>

<property>

              <name>mapreduce.jobhistory.webapp.address</name>(管理员或用户用来

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

       </property>

<property>

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

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

       </property>

</configuration>

 

yarn-site.xml

<configuration>

<property>

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

              <value>mapreduce_shuffle</value>(告诉MapReduce如何进行Shuffle)

       </property>

<property>

              <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>(使

              <value>org.apache.hadoop.mapred.ShuffleHadnler</value>用哪个类来完成)

       </property>

<property>

<name>yarn.nodemanager.recovery.enabled</name>

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

</property>

<property>

<name>yarn.nodemanager.recovery.dir</name>

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

</property>

<property>

<name>yarn.nodemanager.address</name>

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

</property>


<property>

              <name>yarn.web-proxy.address</name>

              <value>yarn_proxy:YARN_PROXY_PORT</value>

       </property>

<property>

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

              <value>localhost:8030</value>

       </property>

<property>

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

              <value>localhost:8031</value>

       </property>

<property>

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

              <value>localhost:8032</value>

       </property>

<property>

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

              <value>localhost:8033</value>

       </property>

<property>

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

              <value>localhost:8088</value>

       </property>

<property>

              <name> mapreduce.job.ubertask.enable</name>

              <value>true</value>  (小作业JVM重用机制)

       </property>

</configuration>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值