第一步:搭建配置新的虚拟机 格式化之前先把tmp目录下所有与Hadoop有关的信息全部删除 rm -rf /tmp/hadoop-centos* 开启之后jps只有Java的进程:sudo vi /etc/hosts 里面加 bogon 1.sudo赋权Root用户 vi /etc/sudoers /root n(查找下一个结果) centos ALL=(ALL) NOPASSWD:ALL 2.修改ens33网卡(桥接模式静态IP)创建软链接 ln –s /etc/sysconfig/network-scripts/ifcfg-ens33 ens33 修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=51248a5b-aece-4777-ab51-7b5e61602180 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.12.206 NETMASK=255.255.255.0 GATEWAY=192.168.12.1 DNA1=219.141.136.10 DNS2=202.106.196.115 DNS3=8.8.8.8 DNS4=114.114.114.114 |
改完后重启network服务 sudo systemctl restart network 虚拟机上右键-->设置-->网络适配器-->桥接模式 检测是否连接网络 ping www.baidu.com 3.修改主机名sudo vi /etc/hostname 原来内容全部删除 写入s126 重启虚拟机 4.安装JDK和Hadoop1.上传文件包 2.解压 tar –zxvf **** 3.创建软链接 ln –s *** hadoop tar -zxvf jdk-8u121-linux-x64.tar.gz ln -s jdk1.8.0_121 java rm -rf jdk-8u121-linux-x64.tar.gz tar -zxvf hadoop-2.8.0.tar.gz ln -s hadoop-2.8.0 hadoop rm -rf hadoop-2.8.0.tar.gz 4.配置环境变量 sudo vi /etc/profile #java JAVA_HOME=/home/centos/java export PATH=$PATH:$JAVA_HOME/bin #hadoop HADOOP_HOME=/home/centos/hadoop Export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin vi ~/hadoop/etc/hadoop/hadoop-env.sh #java export JAVA_HOME=/home/centos/java 5.刷新配置文件 source /etc/profile 5.关闭防火墙sudo systemctl stop firewalld关闭防火墙 sudo systemctl start firewalld开启防火墙 sudo systemctl disable firewalld禁用防火墙(开机不启动) sudo systemctl enable firewalld使用防火墙(开机启动) sudo systemctl status firewalld查看防火墙状态 第二步:Hadoop集群搭建1.独立模式1、 将hadoop的jar包上传服务器 2、 解压tar包 tar –zxvf **** 3、 创建软连接 ln –s *** hadoop 4、 配置环境变量 [vi /etc/profile] 最下面加上 #hadoop HADOOP_HOME=/home/centos/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 最后保存文件加载环境变量配置文件 source /etc/profile 5、 修改hadoop环境变量配置文件配置jdk路径 [$HADOOP_HOME/etc/hadoop/hadoop-env.sh] 6、 测试 hadoop version 默认hadoop就是独立模式。 特点:运行任务是一个java进程,就相当于运行一个java程序 2.伪分布式模式配置修改hdfs配置文件 vi ~/hadoop/etc/hadoop/core-site.xml cd ~/hadoop/etc/hadoop [core-site.xml] <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.12.126:9000</value> </property> </configuration> vi ~/hadoop/etc/hadoop/hdfs-site.xml [hdfs-site.xml] <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 设置ssh免密登录 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 检测方式:ssh localhost/主机真实ip 格式化文件系统 hadoop namenode -format 启动文件系统 jps 检测Java开启的进程 start-dfs.sh 启动文件系统(启动了三个java进程) jps 再次检测Java开启的进程(应该是4个) 配置yarn资源管理器 cd ~/hadoop/etc/hadoop cp mapred-site.xml.template mapred-site.xml vi mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> vi yarn-site.xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> start-dfs.sh && start-yarn.sh && jps 3.完全分布式配置/etc/hosts文件(本地静态DNS) 首行加上 : bogon 增加: 192.168.12.201 s201 192.168.12.202 s202 192.168.12.203 s203 1.设置ssh免密登录: (现在别的主机ssh 主机IP 然后把宿主机复制过去的权限600) 效果:从主机上能通过ssh免密登录 目的:在主机上通过ssh执行命令 设置的方式: 首先给主机设置ssh免密登录,将主机的公钥(id_rsa.pub)通过scp命令发送到其他 主机,在其他主机上将获取到的公钥追加到~/.ssh/authorized_keys。 主机: ssh-keygen –t rsa –P '' –f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys s202: s203: cat ~/.ssh/id_rsa.pub.s201 >> ~/.ssh/authorized_keys 2.shell脚本的操作: 主机写分发脚本cpTo,查看脚本xcall。赋予执行权限。移动到/usr/local/bin目录下,以便我们能在任何地方使用脚本 [cpTo] #脚本的目的是:修改完了主机的文件以后,可以通过它分发到其他主机,实现同步 #脚本的用法:cpTo 文件(绝对路径/相对路径) #!/bin/bash #获取参数的绝对路径 dirname=`cd $(dirname $1); pwd` basename=`basename $1` echo ${dirname}/${basename} for i in s202 s203 do echo "=================$i ${dirname}/${basename}==================" #如果其他机器没有父目录创建父目录 ssh $i mkdir -p ${dirname} #远程拷贝文件 scp $1 ${i}:${dirname}/${basename} done [xcall.sh] #作用是通过ssh远程运行命令,比如查看jps,在比如删除/tmp #用法:xcall 命令 #!/bin/bash for host in s201 s202 s203 do echo "====================echo $host $@===========================" #ssh远程执行命令 #$@获取所有参数 #source /etc/profile 因为ssh远程执行命令不去加载/etc/profile,所以很多命令没法用 ssh $host "source /etc/profile && $@" Done 3.软件安装的操作 安装jdk、hadoop、配置环境变量JAVA_HOME、HADOOP_HOME,可以通过xcall脚本来 同步安装 在主机上修改hosts文件,给主机配置所有机器的dns服务,使用cpTo脚本分发到其他 机器,让其他机器也有dns服务 注意:/etc/hosts是root用户的文件,所以需要切换到root执行 dns服务: 可以将域名解析为ip地址。比如ping s201,解析成ping 192.168.12.201 4.配置文件操作 在主机上修改hadoop的配置文件: [Hadoop-en.sh] [core-site.xml] [hdfs-site.xml] [mapred-site.xml] [yarn-site.xml] [slaves] 通过cpTo脚本进行分发(可以分发上一级目录来全部分发) 1、[hadoop-env.sh]配置javahome 2、[core-site.xml]配置连接url [core-site.xml] <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://s201:9000</value> </property> </configuration> 3、[hdfs-site.xml]配置的是副本数 <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> 4、[mapred-site.xml]配置运行map任务采用的集群资源管理框架 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 5、[yarn-site.xml]配置RM的节点和数据传输方式 <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>s126</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 6、[slaves]配置datanode节点和NM节点 s201 s202 s203 5.主机格式化文件系统 只需要在主机格式化文件系统(xcall删除数据目录/tmp/hadoop*,日志文件/logs/*) 启动hdfs文件系统和yarn框架 xcall查看启动是否成功/看web 第三步:配置项目1、 将要统计的文件(wordcount.txt)上传到hdfs hdfs dfs –put 本地文件 hdfs目录 hdfs dfs -put wordCount2.txt /user 2、 运行任务 hadoop jar jar包 com.zdjy.bigdata.wordCount.hadoop.WordCountApp hdfs输 入文件 hdfs输出目录 hadoop jar wordCount.jar com.zdjy.WordCountApp /user/wordCount2.txt /saa 3、 查看结果 hdfs dfs –cat hdfs输出目录下的文本文件 (hdfs dfs -cat /saa/*) 4.关闭文件系统 hdfs dfs -mkdir /user hdfs dfs -ls -R / hdfs -dfs -put wordCount2.txt /user hdfs dfs -put wordCount2.txt /user hdfs dfs -ls -R / hadoop jar wordCount-0.0.1-SNAPSHOT.jar com.zdjy.bigdata.wordCount.hadoop.WordCountApp /user/wordCount2.txt /out hdfs dfs -cat /out/* 5.在浏览器上看web(sudo systemctl stop firewalld关闭防火墙) http://192.168.12.206:50070 文件系统:50070 yarn:8088
学习大数据敬请关注加米谷大数据微信二维码。 加米谷大数据微信二维码
|