您的位置:首页 > 运维架构

Ubuntu14.04+hadoop2.5.2完全分布式集群搭建

2015-11-08 14:56 627 查看
1.ubuntu创建新用户并增加管理员权限(所有主机)

$是普通管员,#是系统管理员,在Ubuntu下,root用户默认是没有密码的,因此也就无法使用(据说是为了安全)。想用root的话,得给root用户设置一个密码:

sudo passwd root

然后登录时用户名输入root,再输入密码就行了。

ubuntu建用户最好用adduser,虽然adduser和useradd是一样的在别的linux糸统下,但是我在ubuntu下用useradd时,并没有创建同名的用户主目录。

例子:adduser user1

这样他就会自动创建用户主目录,创建用户同名的组。

root@ubuntu:~# sudo adduser aboutyun

[sudo] password for xx:

输入xx用户的密码,出现如下信息

正在添加用户"aboutyun"…

正在添加新组"aboutyun" (1006)…

正在添加新用户"aboutyun" (1006) 到组"db"…

创建主目录"/home/aboutyun"…

正在从"/etc/skel"复制文件…

输入新的 UNIX 口令:

重新输入新的 UNIX 口令:

两次输入db的初始密码,出现的信息如下

passwd: password updated successfully

Changing the user information for db

Enter the new value, or press ENTER for the default

Full Name []:

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Full Name []:等信息一路回车

这个信息是否正确? [Y/n] y

到此,用户添加成功。如果需要让此用户有root权限,执行命令:

root@ubuntu:~# sudo vim /etc/sudoers

修改文件如下:

# User privilege specification

root ALL=(ALL) ALL

aboutyun ALL=(ALL) ALL

保存退出,db用户就拥有了root权限。

2. 修改/etc/hostname
和/etc/hosts(所有主机)


172.16.77.15 aboutyun/123456 master

172.16.77.16 aboutyun/123456 slave1

172.16.77.17 aboutyun/123456 slave1

上面各列分别为IP、user/passwd、hostname

下面是master的修改:通过命令

sudo vim /etc/hosts



下面修改hostname

sudo vim /etc/hostname



修改主机名重启后生效。

上面hosts都一样,只不过hostname有所差别。

3、打通master到slave节点的SSH无密码登陆

3.1 安装ssh

一般系统是默认安装了ssh命令的。如果没有,或者版本比较老,则可以重新安装:

sudo apt-get install ssh

3.2

首先生成 master 的公匙,在 master 节点终端中执行:
cd ~/.ssh                      # 如果没有该目录,先执行一次ssh localhost

ssh-keygen -t rsa              # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa

[/code]

master 节点需能无密码 ssh 本机,这一步还是在 master 节点上执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[/code]

完成后可以使用
ssh Master
验证一下。接着将公匙传输到 Slave1 节点:
scp ~/.ssh/id_rsa.pub aboutyun@slave1:/home/aboutyun/

[/code]

scp时会要求输入slave1上aboutyun用户的密码,输入完成后会提示传输完毕。

接着在
slave1节点
上将ssh公匙保存到相应位置,执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

[/code]

如果有其他 slave 节点,也要执行 将公匙传输到 slave 节点、在 slave 节点上加入授权 这两步。

最后在 master 节点上就可以无密码SSH到slave1节点了。
ssh Slave1

[/code]
4.安装jdk(这里以.tar.gz版本,64位系统为例)

4.1.有安装包直接解压

这里直接解压到了/usr/java/jdk1.7下面:

在/usr下并没有java目录,这需要我们去创建一个java文件夹

cd
/usr

sudo
mkdir java

tar -xzf jdk-7u67-linux-x64.tar.gz          解压到了/usr/java/jdk1.7


4.2.无安装包需要下载


下载jdk

wget http://download. href="http://www.linuxidc.com/topicnews.aspx?tid=12" target=_blank>Oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz?AuthParam=1412395049_5ee2894e196e935ec18e4b2a6236bf28



重命名

mv jdk-7u67-linux-x64.tar.gz\?AuthParam\=1412395049_5ee2894e196e935ec18e4b2a6236bf28 jdk-7u67-linux-x64.tar.gz



解压

tar -xzf jdk-7u67-linux-x64.tar.gz



4.3设置环境变量

环境变量分为用户变量和系统变量。

用户变量配置文件:~/.bashrc(在当前用户主目录下的隐藏文件,可以通过`ls -a`查看到)

系统环境配置文件:/etc/profile

用户变量和系统变量的配置方法一样,本文以配置用户变量为例。

编辑配置文件.bashrc:

vi .bashrc


在文件末尾追加:

# set java environment
export JAVA_HOME=/usr/java/jdk1.7
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH



4.4使环境变量生效

source .bashrc



4.5验证

验证java是否安装成功。

$ java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)


5.关闭每台机器的防火墙

sudo ufw disable (重启生效)

6.hadoop安装

6.1、需要注意的问题

看不到进程大致有两个原因:

1.你的配置文件有问题。

对于配置文件,主机名,空格之类的这些都不要带上。仔细检查

2.Linux的权限不正确。

最常出问题的是core-site.xml,与hdfs-site.xml。

core-site.xml

<property>

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

<value>file:/home/aboutyun/tmp</value>

<description>Abase forother temporary directories.</description>

</property>

复制代码
说一下上面参数的含义,这里是hadoop的临时文件目录,file的含义是使用本地目录。也就是使用的是Linux的目录,一定确保下面目录

/home/aboutyun/tmp

复制代码
的权限所属为你创建的用户。并且这里面我也要会变通,aboutyun,为我创建的用户名,如果你创建了zhangsan或则lisi,那么这个目录就会变为

/home/zhangsan/tmp

复制代码
这里不熟悉,是因为对Linux的不熟悉的原因。这里在来张图:
[align=left]注意:1和2对比。如果你所创建的tmp属于root,那么你会看不到进程。[/align]



[align=left]hdfs-site.xml[/align]

同样也是:要注意下面,你是需要改成自己的用户名的

[align=left] <property>[/align]
[align=left] <name>dfs.namenode.name.dir</name>[/align]
[align=left] <value>file:/home/aboutyun/dfs/name</value>[/align]
[align=left] </property>[/align]
[align=left] <property>[/align]
[align=left] <name>dfs.datanode.data.dir</name>[/align]
[align=left] <value>file:/home/aboutyun/dfs/data</value>[/align]
[align=left] </property>[/align]

上面讲完,我们开始配置

6.2

hadoop集群中每个机器上面的配置基本相同,所以我们先在master上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。

【注意】:master和slaves安装的hadoop路径要完全一样,用户和组也要完全一致

1、 解压文件

将第一部分中下载的

tar zxvf hadoop-2.5.2_x64.tar.gz

复制代码

mv hadoop-2.5.2 hadoop

复制代码

解压到/home/aboutyun路径下

2、 hadoop配置过程

配置之前,需要在master本地文件系统创建以下文件夹:

~/dfs/name

~/dfs/data

~/tmp
这里文件权限:创建完毕,你会看到红线部分,注意所属用户及用户组。如果不再新建的用户组下面,可以使用下面命令来修改:

sudo
chown -R aboutyun:aboutyun ~/dfs/

sudo
chown -R aboutyun:aboutyun ~/tmp



这里要涉及到的配置文件有7个:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/slaves

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上文件默认不存在的,可以复制相应的template文件获得。

配置文件1:hadoop-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7)

配置文件2:yarn-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7)

配置文件3:slaves (这个文件里面保存所有slave节点)



配置文件4:core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:8020</value>

</property>

<property>

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

<value>131072</value>

</property>

<property>

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

<value>file:/home/aboutyun/tmp</value>

<description>Abase for other temporary directories.</description>

</property>

<property>

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

<value>*</value>

</property>

<property>

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

<value>*</value>

</property>

</configuration>

复制代码

配置文件5:hdfs-site.xml

<configuration>

<property>

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

<value>master:9001</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/aboutyun/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/aboutyun/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

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

<value>true</value>

</property>

</configuration>

复制代码

配置文件6:mapred-site.xml

<configuration>

<property> <name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>master:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>master:19888</value>

</property>

</configuration>

复制代码

配置文件7:yarn-site.xml

<configuration>

<property>

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

<value>mapreduce_shuffle</value>

</property>

<property>

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

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

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

<value>master:8032</value>

</property>

<property>

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

<value>master:8030</value>

</property>

<property>

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

<value>master:8031</value>

</property>

<property>

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

<value>master:8033</value>

</property>

<property>

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

<value>master:8088</value>

</property>

</configuration>

复制代码

3、复制到其他节点

上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:

sudo scp -r /home/aboutyun/hadoop aboutyun@slave1:~/

复制代码

4.配置环境变量

第一步:

vi /etc/environment

复制代码
第二步:添加如下内容:记得如果你的路径改变了,你也许需要做相应的改变。



红框中改为“/home/aboutyun/hadoop/bin:/home/aboutyun/hadoop/sbin:

5、启动验证

5.1 启动hadoop

格式化namenode:

hdfs namenode –format

复制代码
或则使用下面命令:

hadoop namenode format

复制代码

启动hdfs:

start-dfs.sh

复制代码

此时在master上面运行的进程有:

namenode
secondarynamenode

slave节点上面运行的进程有:datanode

启动yarn:

start-yarn.sh

复制代码
我们看到如下效果:

master有如下进程:



slave1有如下进程



此时hadoop集群已全部配置完成!!!

【注意】:而且所有的配置文件<name>和<value>节点处不要有空格,否则会报错!
然后我们输入:(这里有的同学没有配置hosts,所以输出master访问不到,如果访问不到输入ip地址即可)
http://master:8088/
复制代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: