设为首页 加入收藏

TOP

Hadoop2.0全分布式集群架构
2019-05-14 12:24:08 】 浏览:155
Tags: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用户同样的权限。

在rootALL=(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都是免密码

scpauthorized_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
---------------------
作者:狮锅艺
来源:CSDN
原文:https://blog.csdn.net/Wee_Mita/article/details/52335208
版权声明:本文为博主原创文章,转载请附上博文链接!

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇结合案例讲解MapReduce重要知识点.. 下一篇Thread.setDaemon详解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目