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 节点终端中执行:
[/code]
master 节点需能无密码 ssh 本机,这一步还是在 master 节点上执行:
[/code]
完成后可以使用
[/code]
scp时会要求输入slave1上aboutyun用户的密码,输入完成后会提示传输完毕。
接着在
[/code]
如果有其他 slave 节点,也要执行 将公匙传输到 slave 节点、在 slave 节点上加入授权 这两步。
最后在 master 节点上就可以无密码SSH到slave1节点了。
[/code]
4.安装jdk(这里以.tar.gz版本,64位系统为例)
4.1.有安装包直接解压
这里直接解压到了/usr/java/jdk1.7下面:
在/usr下并没有java目录,这需要我们去创建一个java文件夹
cd
/usr
sudo
mkdir java
4.2.无安装包需要下载
环境变量分为用户变量和系统变量。
用户变量配置文件:~/.bashrc(在当前用户主目录下的隐藏文件,可以通过`ls -a`查看到)
系统环境配置文件:/etc/profile
用户变量和系统变量的配置方法一样,本文以配置用户变量为例。
编辑配置文件.bashrc:
在文件末尾追加:
验证java是否安装成功。
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/
复制代码
$是普通管员,#是系统管理员,在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/
复制代码
相关文章推荐
- Property's synthesized getter follows Cocoa naming convention for returning
- Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境
- Win10编译OpenCV2.4.9+CUDA7.5的方法
- linux驱动学习笔记(一)
- 【Nginx】启动过程
- MapReduce架构
- Nginx配置文件nginx.conf中文详解
- 最简单的视频网站(JavaEE+FFmpeg)
- 使用ngin实现tomcat6和iis共用80端口
- Linux内核源代码情景分析笔记---对照4.2.5内核 续
- Linux 学习(4) -- printk与printf的区别
- 解决bash: mysql: command not found 的方法
- Linux学习笔记(1)-从开机开始
- Linux硬件资源管理
- window api 监控
- ubuntu下启动apache和mysql的命令(转)
- linux中软硬连接文件命令
- 关于OpenCV中IplImage的char类型的ImageData需要进行强制类型转换为uchar的说明
- linux马哥 sed
- 马哥linux 笔记 grep和正则表达式