centos7搭建hadoop集群

来源:互联网 发布:上帝不会掷骰子 知乎 编辑:程序博客网 时间:2024/06/09 12:42

先期准备

主机 系统 ip地址 hadoop-master centos7 192.168.196.162 hadoop-slave1 centos7 192.168.196.163 hadoop-slave2 centos7 192.168.196.164

ps:大家使用克隆的方式复制多个独立的虚拟机,每个虚拟机创建一个hadoop用户并加入到root组中useradd -m hadoop -G root -s /bin/bash 利用 passwd hadoop 配置密码遇到提示说密码简单就再输入一次
软件点击下面的下载:
jdk-8u121-linux-x64.rpm 或者访问 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
hadoop-2.7.3.tar.gz 不能下载的请访问 http://hadoop.apache.org/releases.html

网络配置

配置ip和主机名,hosts映射

利用root用户登陆hadoop-master主机上配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

打开网卡编辑如图
这里写图片描述

注意如果你是克隆的虚拟机那么每个虚拟机的网卡UUID是一样的,这个不行,所有要删除这个,让它自动在生成一个
重启网络服务systemctl restart network
我的实验是把上面图中的ip地址改为192.168.196.162 默认网关设置为192.168.196.2 为什么这么做,根据什么要看看你的虚拟机网络编辑器 这个在虚拟机菜单 编辑 中 我的设置如图:
这里写图片描述
如果你在上图中设置取消了DHCP那么你想让你的电脑访问虚拟机就设置你的电脑中这里写图片描述
配置静态IP如我一样
这里写图片描述
至此我们的主机和虚拟机就互通了,虚拟机还能访问外网。但是一定要明白我上面的设置。

修改hostnamevi /etc/hostname 删除原有内容添加 hadoop-master 保存退出vi
修改hosts vi /etc/ 添加如下图内容
这里写图片描述
保存退出,重启虚拟机。在每个虚拟机里重复修改网卡(ifcfg-enss*),hostname,hosts 的步骤,重启后测试互通性
要求在hadoop-master中能ping通slave1,slave2。其它任何一个虚拟机中都能ping通另外连个才行
例如:
这里写图片描述

配置ssh无密码登陆到slave1,slave2上

检查每个虚拟机上是否安装了ssh 和 启动了sshd服务
rpm -qa | grep ssh
如图所示表示安装了
这里写图片描述
这里写图片描述
如果没有安装请执行下面的代码:

yum -y install openssl openssh-server openssh-clients

退出所有虚拟机上root登陆用户,使用hadoop用户登录
在每个虚拟机上执行 ssh localhost 测试一下,最好都做一下,非常有用,会生成 .ssh 隐藏文件夹,遇到提示输入yes
如图
这里写图片描述

在hadoop-master虚拟机上生成ssh密钥

cd .sshssh-keygen -t rsa #遇到提示一路回车就行ll #会看到 id_rsa id_rsa.pub 两文件前为私钥,后为公钥cat id_rsa.pub >> authorized_keys #把公钥内容追加到authorized_keys文件中chmod 600 authorized_keys #修改文件权限,重要不要忽略

至此hadoop-master可以无密码登陆自己了,测试 ssh localhost 不再提示输入密码,如果不争取请检查少了上面那一步

将hadoop-master的公钥传送到所有的slave上,实现hadoop-master无密码登陆到所有slave上

scp authorized_keys hadoop@hadoop-slave1:~/.ssh/scp authorized_keys hadoop@hadoop-slave2:~/.ssh/

hadoop登陆到每个slave上执行

cd ~/.sshchmod 600 authorized_keys 

测试hadoop-master ssh登陆hadoop-slave1,hadoop-slave1观察是否需要输入密码,如果不需要则成功,否则失败,请检查以上步骤
这里写图片描述
到这儿你就成功了一半了,加油,看好你哟!!!

jdk8+

使用xftp把jdk-8u121-linux-x64.rpm传送到每个虚拟机上
使用下面代码安装
sudo yum -y install jdk-8u121-linux-x64.rpm
如果出现这样的错误 hadoop 不在 sudoers 文件中。此事将被报告。
可以使用两种途径解决
a:切换到root用户

suyum -y install jdk-8u121-linux-x64.rpm

b:以后一劳永逸的做法

suvisudo

之后输入:89 回车 添加 hadoop ALL=(ALL) ALL 注意不是空格是制表符
如图:
这里写图片描述
保存后退出 就是先 esc 之后输入 :wq
之后退出root 就是输入exit
在执行sudo yum -y install jdk-8u121-linux-x64.rpm 输入hadoop密码ok
设置环境变量,我使用本地环境变量,默认安装的jdk在/usr/java/jdk1.8.0_121
vi ~/.bashrc
添加

export JAVA_HOME=/usr/java/jdk1.8.0_121export PATH=$PATH:$JAVA_HOME/bin

这里写图片描述
退出保存
执行source ~/.bashrc
测试是否成功java -version
这里写图片描述
记住每台上面都做

hadoop配置

使用xftp把hadoop-2.7.3.tar.gz传送到每个虚拟机上

使用tar -xzvf hadoop-2.7.3.tar.gz 解压

配置hadoop环境变量 vi ~/.bashrc 我的hadoop安装目录/home/hadoop/hadoop-2.7.3
添加

# Hadoop Environment Variablesexport HADOOP_HOME=/home/hadoop/hadoop-2.7.3export HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

编辑如下5个文件 在 /home/hadoop/hadoop-2.7.3/etc/hadoop 目录中
1.core-site.xml

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://hadoop-master:9000</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/home/hadoop/hadoop-2.7.3/tmp</value>    </property></configuration>

2.hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>        <property>                <name>dfs.namenode.secondary.http-address</name>                <value>hadoop-master:50090</value>        </property>        <property>                <name>dfs.replication</name>                <value>2</value>        </property>        <property>                <name>dfs.namenode.name.dir</name>                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/name</value>        </property>        <property>                <name>dfs.datanode.data.dir</name>                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/data</value>        </property></configuration>

3.mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>        <property>                <name>mapreduce.framework.name</name>                <value>yarn</value>        </property>        <property>                <name>mapreduce.jobhistory.address</name>                <value>hadoop-master:10020</value>        </property>        <property>                <name>mapreduce.jobhistory.webapp.address</name>                <value>hadoop-master:19888</value>        </property></configuration>

4.yarn-site.xml

<?xml version="1.0"?><configuration><!-- Site specific YARN configuration properties -->        <property>                <name>yarn.resourcemanager.hostname</name>                <value>hadoop-master</value>        </property>        <property>                <name>yarn.nodemanager.aux-services</name>                <value>mapreduce_shuffle</value>        </property></configuration>

5.slaves

hadoop-slave1hadoop-slave2

在每个虚拟机的/home/hadoop/hadoop-2.7.3/etc/hadoop 目录中都要改成一样的,不如改一份上传的每个地方来的方便。

运行案例

关闭防火墙和selinux

切换到管理员

susystemctl stop firewalldsetenforce 0

在每个机子上执行,上面的做法是临时关闭

启动hadoop集群

hdfs namenode -format #第一次启动要执行格式化,之后启动不用执行这个start-dfs.shstart-yarn.shmr-jobhistory-daemon.sh start historyserver

在hadoop-master 执行 jps
看到如下算成功

[hadoop@hadoop-master ~]$ jps3345 NameNode3529 SecondaryNameNode3962 JobHistoryServer3678 ResourceManager3998 Jps[hadoop@hadoop-master ~]$ 

在hadoop-slave1 和 hadoop-slave2上 执行jps
看到如下算成
hadoop-slave1中

[hadoop@hadoop-slave1 ~]$ jps3142 DataNode3357 Jps3246 NodeManager[hadoop@hadoop-slave1 ~]$ 

hadoop-slave2

[hadoop@hadoop-slave2 ~]$ jps3092 DataNode3306 Jps3196 NodeManager[hadoop@hadoop-slave2 ~]$ 

上面的信息中数字表示进程ID,后面的字符表示进程名字
缺少任何一个进程表示集群启动失败
失败可以通过查看日志查找原因。

如果通过真机win访问hadoop web管理界面需要先配置真机的hosts文件它存在于C:\Windows\System32\drivers\etc 目录中
在文件中添加

192.168.196.162 hadoop-master192.168.196.163 hadoop-slave1192.168.196.164 hadoop-slave2

之后访问 http://hadoop-master:50070 查看节点状态

这里写图片描述

执行案例

先在集群上创建用户目录
hdfs dfs -mkdir -p /user/hadoop
接着创建资源文件目录
hdfs dfs -mkdir input
上传要分析的数据文件到input中
hdfs dfs -put hadoop-2.7.3/etc/hadoop/*.xml input
执行hadoop自带的案例,统计dfs开头的信息
hadoop jar hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'

通过web查看任务执行情况
http://hadoop-master:8088/cluster

这里写图片描述

这里写图片描述

这里写图片描述

当然控台也有输出我就不截图了

查看输出结果:
这里写图片描述

通过shell查看统计结果
这里写图片描述

关闭集群服务,在hadoop-master上执行

stop-dfs.shstop-yarn.shmr-jobhistory-daemon.sh stop historyserver

怎么样你成功了吗?

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 白色水彩没有了怎么办 大学毕业我想考军校怎么办? 考军校分数不够怎么办 大专工作不好找怎么办 小学二年级插班怎么办 进厂年龄不到怎么办 入伍批准书丢了怎么办 考驾照期间参军怎么办 学位房被占用怎么办 教室里回音太大怎么办 教室里味道太大怎么办 键盘只能打拼音怎么办 一师一优课件上传慢怎么办? 药店买药不给退怎么办 小孩热感冒发烧怎么办 孕妇热感冒了怎么办 孕妇热感冒喉咙痛怎么办 空军一号有划痕怎么办 高铁上乘客太吵怎么办 军官礼服丢了怎么办 空军大檐帽帽袋坏了怎么办 保安不发工资怎么办 做保安工资不资不发怎么办 公安改革辅警怎么办 皮带带子丢了怎么办 警校学生证丢了怎么办 警校证丢了怎么办 盘查没带身份证怎么办 网线拔不出来怎么办 车间压强差过大怎么办 不遵守交通规则交警怎么办 西裤屁股磨出光该怎么办 中暑发烧不退烧怎么办 小孩中暑反复发烧怎么办 上火导致的发烧怎么办 夏季运动中暑后怎么办 感觉中暑了头疼怎么办 轻度中暑怎么办小妙招 人中暑了头疼怎么办 中暑怎么办三字步骤 中暑了头疼恶心怎么办