CentOs7安装集群hadoop2.7.5(1)

  • 配置网络
  • 修改主机名
  • 关闭防火墙
  • 关闭SELinux
  • 安装jdk
  • 增加hadoop用户
  • 配置ssh信任
  • 配置hadoop

    前言,我在部署hadoop2.8出了很多问题,所以重新部署低版本2.7.3。在vmware上打开三台机器,装好centos7系统后,选定一台机器作为 master.hadoop,另外两台机器分别为slave1.hadoop,slave2.hadoop。前面6步三台机器上一样操作。vmware的使用这儿不展开。


这里写图片描述
这是我的主机对应ip,每个人的主机ip都不一样,可以通过ifconfig查看。
在应用程序中找到终端打开,输入ifconfig可以看到主机ip地址。
master.hadoop 192.168.220.128
slave1.hadoop 192.168.220.128
slave2.hadoop 192.168.220.128


通过远程终端登录到一台linux服务器,我这里使用SecureCRT。输入ip addr,可以看到我的ip地址是192.168.220.128
这里写图片描述


禁用ipv6网络,因为hadoop不支持ipv6。但是启用ipv6,有些服务会监听到ipv6,这样使用集群的时候可能会出问题。配置两个内核参数
vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
退出保存
退出保存方法:先Esc,再:x ,最后回车
使用sysctl工具使配置生效 sysctl -p
这里写图片描述
其他两台机器执行同样操作。


使用hostnamectl修改主机名hostnamectl set-hostname master.hadoop,使用hostname查看。若@后面未改变,退出终端重新登录就可以看到
这里写图片描述

另外两台机器分别执行
hostnamectl set-hostname slave1.hadoop
hostnamectl set-hostname slave2.hadoop


查看防火墙是否关闭,这里注意CentOs7关闭防火墙与CentOs6.x是不同的
systemctl status firewalld ——–>centos7
systemctl status iptables ——–>centos6.x
我这儿已经关闭,未关闭的执行下两条关闭防火墙
systemctl stop firewalld.service ———>停止firewall
systemctl disable firewalld.service ——>禁止firewall开机启动
使用sestatus查看状态
这里写图片描述


setenforce 0 临时关闭selinux,下次开机启动又会打开。这里修改配置文件vim /etc/selinux/config,把SELINUX设置为disabled
这里写图片描述


安装SSH Secure Shell Client客户端传输文件,安装即可登录直接拖拉到linux。下面给出工具链接,安装不给予说明。
链接:https://pan.baidu.com/s/1dHaqZmD 密码:s58m
这里写图片描述
直接将jdk拖到2位置
这里写图片描述

jdk8 链接:https://pan.baidu.com/s/1bqtHEj1 密码:g4f7
将下载好的jdk直接拖到连接的虚拟机内。安装jdk,下图可以看到jdk安装完毕,可以使用java检验是否安装成功
rpm -ivh jdk-8u151-linux-x64.rpm
这里写图片描述


增加hadoop用户,useradd hadoop。增加密码passwd hadoop。由于我之前已将创建了hadoop用户,所以显示已经存在。密码是不显示的,输完回车即可
这里写图片描述

给hadoop用户增加sudo权限,方便后面操作—>visudo,增加
hadoop ALL=(ALL) ALL
这里写图片描述
保存。切换hadoop用户 su - hadoop
这里写图片描述


接下来设置免密码登录
执行ssh-keygen -t rsa生成密钥对,接下来都按回车
把公钥复制到authorized_keys里面—–>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
这里写图片描述
可以通过—–>cat .ssh/authorized_keys 查看是否复制成功
修改权限—–>chmod 600 .ssh/authorized_keys,可以看到下图-rw状态改变
这里写图片描述

取消免密提示有两种方式,我这里使用第二种
第一种:针对全局——>cat /etc/ssh/ssh_config 改为no
这里写图片描述

第二种:只对hadoop用户生效,添加配置文件
vi .ssh/config

Host localhost
    StrictHostKeyChecking no
Host 0.0.0.0
    StrictHostKeyChecking no
Host *hadoop*
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

这里写图片描述

修改权限——>chmod 600 .ssh/config,然后查看.ssh目录下的文件
这里写图片描述

修改hosts文件——>vi /etc/hosts
这里写图片描述
ip可以通过ipconfig或ip addr查看

把master.hadoop的公钥拷贝到slave1.hadoop,slave2.hadoop上
scp id_rsa.pub slave1.hadoop:/home/hadoop
scp id_rsa.pub slave1.hadoop:/home/hadoop
这里是需要输入密码的slave1.hadoop或slave2.hadoop的密码的
这里写图片描述

打开slave1.hadoop,slave2.hadoop终端拷贝master公钥内容到authorized_keys中
这里写图片描述
注意主机之间的切换
这里写图片描述


接下来最后一步配置hadoop,连接上hadoop用户,把hadoop-2.x传到主机上。我这儿使用hadoop-2.7.5,直接把hadoop包拖进主机,下面可以看到上传进度
链接:https://pan.baidu.com/s/1mkikpDI 密码:gecn
这里写图片描述
这里写图片描述

把hadoop部署到usr/local下,先拷贝安装包,需要sudo权限
sudo cp hadoop-2.7.5.tar.gz /usr/local,进到/usr/local目录下,可以看到已经传到/usr/local下了。注意这儿/usr/local前面必须有/。若出现“没有/usr/local这个文件”,可以使用mkdir手动创建文件夹
这里写图片描述
解压——–>sudo tar xzvf hadoop-2.7.5.tar.gz
删除tar——>rm -r hadoop-2.7.5.tar.gz
创建软连接——->sudo ln -s hadoop-2.7.5 hadoop
这里写图片描述
配置环境变量,全局 sudo vim /etc/profile
加载配置文件—–>source /etc/profile

### SET HADOOP_HOME
export JAVA_HOME=/usr/java/default
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

### Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

这里写图片描述

修改所有者 sudo chown -R hadoop:hadoop hadoop-2.7.5
这里写图片描述

修改hadoop脚本,vim etc/hadoop/hadoop-env.sh,把JAVA_HOME和HADOOP_CONF_DIR改为具体目录

export JAVA_HOME=/usr/java/default
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/

这里写图片描述
执行hadoop fs -ls / 看是否配置成功。
这里写图片描述
发现出现警告,可以忽视。或者可以在在/usr/local/hadoop/etc/hadoop/log4j.properties文件中添加

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

这里写图片描述

下面写个例子感受下hadoop的运行,照着我的步骤直接执行就可以了
进入hadoop目录—–>cd /usr/local/hadoop
创建input文件夹——>mkdir ./input
添加一个test.txt——–>vim input/test.txt
下面内容可以随意填写

hello hadoop
how do you do
are you ok
i am ok

执行下wordcount的MapReduce程序,wordcount在下面目录里是有的,直接执行以下代码。统计单词数

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount ./input ./output 

很尴尬,报以下的错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Apps

         at java.lang.ClassLoader.defineClass1(Native Method)

         at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

         at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

         at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

         at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

         at java.security.AccessController.doPrivileged(Native Method)

         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

         at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

         at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

         at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:93)

         at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:163)

         at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731)

         at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:536)

         at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1296)

         at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1293)

         at java.security.AccessController.doPrivileged(Native Method)

         at javax.security.auth.Subject.doAs(Subject.java:415)

         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)

         at org.apache.hadoop.mapreduce.Job.submit(Job.java:1293)

         at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1314)

         at WordCount.main(WordCount.java:70)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.util.Apps

         at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

         at java.security.AccessController.doPrivileged(Native Method)

         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

         at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

         at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

         ... 24 more

看异常是相应的jar没找到,有两种解决方法。我采用第二种
1、凡是出现 classNotFound、NoClassDefFoundError之类的错误异常,多是jar包未导入引起的。根据相应提示找相应目录下的jar包即可。
2、配置环境变量
vi /etc/profile增加
这里写图片描述
我这儿全部给出,需要的自己添加便可,最后source /etc/profile

### Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

这里写图片描述

cd output
ll
cat part-r-00000

查看下执行结果
这里写图片描述
以上是单节点配置(非分布式)执行


下面在以上基础上配置集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值