hadoop2.6.5集群安装及mapreduce测试运行
- 环境准备
系统:centos6.5
虚拟机:VMware Workstation
jdk文件:jdk-7u67-linux-x64.tar.gz
hadoop文件:hadoop-2.6.5.tar.gz
这里搭建集群包括4个节点,1个Master,3个Salve ,需要实现节点间局域网连接,可以相互ping通。
规划节点IP地址(可自定义),下面是采用机子原有IP:
Master.Hadoop 192.168.193.130
Salve1.Hadoop 192.168.193.131
Salve2.Hadoop 192.168.193.132
Salve3.Hadoop 192.168.193.133
环境设置
修改机器名称
将机器名字修改为Master.Hadoop,命令:hostname Master.Hadoop
vim /etc/sysconfig/network
将localhost对应修改为Master.Hadoop- 修改机器IP
(注意:此步操作过后,会导致无法连接外网,后面需要解决这个问题,可不修改ip,下述步骤采用不修改ip的方式,可略过该步)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
增加一行:IPADDR xxxxxx(ip地址)
然后,source应用改变,或者reboot重启
source /etc/sysconfig/network-scripts/ifcfg-eth0
查看IP是否修正成功:ifconfig 修改host配置文件
将机器名称与机器ip对应,方便后续对应;
vim /etc/hosts
添加如下内容:
192.168.193.130 Master.Hadoop
192.168.193.131 Salve1.Hadoop
192.168.193.132 Salve2.Hadoop
192.168.193.133 Salve3.Hadoop
然后将四台机器均进行相同的操作
测试机器间是否可以相互ping通,如下:
分别用ping Salve1.Hadoop或ping 192.168.193.131尝试。创建hadoop用户组
一般要对集群的说有机器之间建立无密码ssh,方便集群之间的通信,设一个root外的用户可以避免暴露过多权限给hadoop。
先创建hadoop用户组:groupadd hadoop
添加用户:useradd hadoop -g hadoop
添加用户密码:passwd hadoopssh无密码验证
1、查看是否安装openssh与rsync(远程数据同步工具,可通过lan或wlan快速同步多套主机间文件)
rpm -qa | grep openssh
rpm -qa | grep rsync
若未安装则进行安装
yum install ssh
yum install rsync
2、切换至hadoop用户
su hadoop
3、配置Master可登陆其他Salve主机
3.1 ssh-keygen:生成密码对,会在文件夹下生成id_rsa与id_rsa.pub两个文件。
查看:ll ./.ssh
3.2 将id_rsa.pub追加到authorized_keys文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.3 修改authorized_keys权限,默认权限700
chmod 600 ~/.ssh/authorized_keys
3.4 修改ssh配置文件,需切换root用户
vim /etc/ssh/sshd_config
找到如下三项:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径
重启ssh服务
service sshd restart
3.5 测试是否成功
ssh localhost
中间填入yes,再次输入,不要求填写密码即成功。master与salve间无密码互通
1、每个机器按照第5步运行一遍
2、将几台机器实现相互间无密码连通,剩下的操作在一台机器上操作即可,利用scp命令进行数据传输,以Master与Salve1之间的操作为例;
scp ~/.ssh/authorized_keys hadoop@192.168.193.131:~/
或scp ~/.ssh/authorized_keys hadoop@Salve1.Hadoop:~/
3、为了操作方便,下述操作均在Master上操做,切换至Salve1,
ssh Salve1.hadoop
此时机器间还未实现无密码传输,需输入预先设定的密码
4、此时已登入Salve1,将从Master中通过scp传入的authorized_keys 添加到Salve1下.ssh下authorized_keys中
cat ~/authorized_keys >> ~/.ssh/authorized_keys
5、从其他机器导入authorized_keys没用了,可以删除了
rm ~/authorized_keys
6、切换回Master机器,测试是否可无密码登陆Salve1
ssh Salve1.Hadoop或ssh 192.168.193.131
此时可发现无需密码即可登录。
7、将Master与其他Salve之间操作同上1~5步。或者将各个节点上的id_pub导入到一个机器上authorized_keys中,然后复制到其他机器上。
例如:
切换到Salve2机器上ssh Salve2.Hadoop (需输入登录密码)
然后scp ~/.ssh/authorized_keys hadoop@Salve1.Hadoop:~/
再切换回Salve1,将从Salve2中获取的authorized_keys(或id_rsa.pub)导入到Salve1中的authorized_keys。。。以此类推
操作完成以后,其他机器都可以无密登陆Salve1,将Salve1中的authorized_keys替代其他机器中的authorized_keys。
安装jdk
- 切换至root用户
- 上传jdk文件
将jdk文件上传到虚拟机上自定义的文件夹中,这里放到/home/hortonworks下,安装在/usr/java中; - 将文件copy到其他机器上
在各个节点上创建文件 mkdir /usr/java
并将jdk文件传输到Slave上,以Salve1为例
scp /home/hortonworks/jdk-7u67-linux-x64.tar.gz root@Salve1.Hadoop:/usr/java
注意:采用root用户需输入密码,传输可用hadoop用户,已实现无密传输 - 解压文件
解压至文件夹 /usr/java中,进入到文件路径下
cd /usr/java
tar -zxvf /usr/java/jdk-7u67-linux-x64.tar.gz - 删除导入的jdk文件
rm /usr/java/jdk-7u67-linux-x64.tar.gz - 配置环境变量
vim /etc/profile
在文件底部加入JAVA_HOME、ClASS_PATH、PATH
使配置生效
source /etc/profile - 验证 java是否安装成功
java -version
ok验证成功 - 赋予hadoop用户操作权限
用root用户,进入/usr文件夹,将java文件夹操作权限赋予hadoop用户
chown -R hadoop:hadoop ./usr/java
安装hadoop集群
- 设置安装路径
各个节点上创建hadoop文件夹 mkdir /usr/hadoop - 将Master主机上的hadoop文件上传到其他节点上
例如:
scp /home/hortonworks/jdk-7u67-linux-x64.tar.gz hadoop@Salve1.Hadoop:/usr/hadoop - 解压文件
进入/usr/hadoop路径,执行如下
Master上:
tar -zxvf /home/hortonworks/hadoop-2.6.5.tar.gz
Salve上:tar -zxvf /usr/hadoop/hadoop-2.6.5.tar.gz - 将hadoop文件夹赋予hadoop用户读权限
chown –R hadoop:hadoop hadoop - 删除安装包
rm /usr/hadoop/hadoop-2.6.5.tar.gz - 添加tmp文件夹
因为HDFS把namenode的格式化信息存在了系统的tmp目录下,该目录每次开机会被清空,因此每次重新启动机器,都需要重新格式化HDFS。解决方案是配置一个新的tmp目录给hadoop,这样无需每次重新格式化hdfs。
mkdir /usr/hadoop/hadoop-2.6.5/tmp - hadoop环境配置
vim /etc/profile
在底部加入
export HADOOP_HOME=/usr/hadoop/hadoop-2.6.5
export PATH= HADOOPHOME/sbin: <script type="math/tex" id="MathJax-Element-1">HADOOP_HOME/sbin:</script>HADOOP_HOME/bin:$PATH - hadoop配置
core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件
1、配置hadoop-env.sh
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
配置java环境,在文件最底部添加:
export JAVA_HOME=/usr/java/jdk1.7.0_67
2、配置core-site.xml
核心配置文件,设置临时目录及配置的是HDFS的地址和端口号,注:须将截图中的value中ip修改为192.168.193.130
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/core-site.xml
节点configuration中添加内容如下:
3、配置hdfs-site.xml
修改Hadoop中HDFS的配置,配置的备份方式默认为3,Salve少于3则会报错
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
4、配置mapred-site.xml
cp /usr/hadoop/hadoop-2.6.5/etc/hadoop/mapred-site.xml.template /usr/hadoop/hadoop-2.6.5/etc/hadoop/ mapred-site.xml
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/ mapred-site.xml
添加如下内容:
5、配置Master文件
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/ masters
添加master主机ip
这里填入192.168.193.130
6、配置Salves文件
Master主机特有
vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/slaves
添加:
192.168.193.131
192.168.193.132
192.168.193.133
9、配置Salve的hadoop,可以单机采用上述1-5;也可直接将master节点上的hadoop文件夹复制过去,salve机器上的slaves文件是无需配置的,但无所谓。
9.1、scp -r /usr/hadoop root@Salve1.Hadoop:/usr/
9.2、切换至salve机器的root用户, 例如ssh :Salve1.Hadoop。
9.3、配置hadoop环境
vim /etc/profile
在底部加入
9.4、usr下,将hadoop文件夹赋予hadoop用户读权限
chown -R hadoop:hadoop hadoop
启动和验证
- 关闭iptables服务
查看iptables状态:service iptables status
关闭iptables服务:chkconfig iptables off(重启后生效)
临时关闭ptables服务:service iptables stop - 启动hadoop
2.1格式化namenode
hadoop namenode -format
2.2启动:start-all.sh
发现存在警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable;
解决方案:网上查找资料说是由于hadoop是32bit编译的,而系统为64位的所导致的;
下载文件:
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar
下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。重新启动,就没有警告了。 - 验证是否启动成功
jps查看启动项
master显示:
slave显示:
也可运行命令查看个节点信息:
hadoop dfsadmin -report
网页版检测:
http:192.168.193.130:50070 - 其他:
若修改了ip,解决修改密码之后,无法上网的问题
1、切换root用户运行:
system-config-network
会弹出对话框
选择Device configuration,回车
选择eth0,回车
只保留name,device,use dhcp在中括号中添加*,其他均修改为空
保存设置;
重启网络服务:service network restart
ok,可以上网了,缺点:修改的ip失效,回复原始ip,所以就返回修改,使用原本的ip,如果最初使用原始的ip也就无需这步了.
应用mapreduce
- 启动hadoop集群
start-all.sh - 在hadoop文件系统中增加文件
hadoop fs 查看hdfs操作系统命令集合 - 创建hdfs目录
hadoop fs -mkdir /input - 上传文件
hadoop fs -put /usr/hadoop/hadoop-2.6.5/README.txt /input/ - 修改文件名称
hadoop fs -mv /input/README.txt /input/readme.txt - 查看文件
hadoop fs -ls /input
输出文件夹为output,无需新建,若已存在需删除 - 运行hadoop自带例子
hadoop jar /usr/hadoop/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /output - 查看文件输出结果
hadoop fs -ls /output - 查看词频统计结果
hadoop fs cat /output/part-r-00000 - 将hdfs上文件导出到本地
hadoop fs -get /output/part-r-00000 /home/hadoop/data/pacc
实例学习
安装完成了,终于可以好好学习一些实例了。
更多推荐
所有评论(0)