Hadoop是Apache开源组织的一个分布式计算开源框架,用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。 Hadoop的优点:高可靠性、高扩展性、高效性、高容错性、低成本
实验 JDK+Hadoop集群 软件程序 VMWare 12 CentOS7 SecureCRT Jdk-8u121-linux-x64 Hadoop-2.7.3 实验步骤 一、环境准备 1.安装并激活VMWare 12; 2. 创建虚拟机,安装Linux系统CentOS7,设置主机名,开启网络服务,设置管理员账户密码; 3.在Windows下安装SecureCRT,并使用激活工具激活,创建与CentOS7的虚拟机的链接。修改SecureCRT的外观属性设置:【Options】→【Session Options】→【Appearance】→【Font】选择字体【Character encoding】选择 UTF-8。 二、Hadoop三种模式 1.在SecureCRT连接虚拟机,检查防火墙状态,停止和禁止防火墙的相关服务;
firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。2.传输JDK和HADOOP压缩包,解压并进行安装; (1)传输JDK和HADOOP压缩包 ecureCRT 【File】→【Connect SFTP Session】开启sftp操作
put jdk-8u121-linux-x64.tar.gz put hadoop-2.7.3.tar.gz传输文件从本地当前路径(Windows)到当前路径(Linux) (2)解压并安装JDK、HADOOP
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/module 解压安装 tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module 解压安装3.配置JDK和Hadoop; vi /etc/profile文件添加:
export JAVA_HOME=/opt/module/jdk1.8.0_121 export PATH=$JAVA_HOME/bin:$PATH export HADOOP_HOME=/opt/module/hadoop-2.7.3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH Esc :wq!保存并退出。JDK不需要配置CLASSPATH。 source /etc/profile配置生效,javac检验是否成功,hadoop检验是否成功。4.单机模式配置hadoop -env.sh
vi /opt/module/hadoop-2.7.3/etc/hadoop/hadoop-env.sh文件修改 Esc :set number //显示行号 Esc :set nonumber //取消行号 修改第25行export JAVA_HOME=/opt/module/jdk1.8.0_121 Esc:wq!保存并退出本地模式没有HDFS和Yarn,配置JDK后MapReduce能够运行java程序。
5.运行自带程序wordcount
cd /opt/module/hadoop-2.7.3/share/hadoop/mapreduce //转入wordcount所在路径。 touch in.txt //创建In.txt文件 vi in.txt //输入内容 hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /adir/in.txt output/ //运行wordcount运行成功之后,进入/output目录,打开文件part-r-00000查看计数结果。
6.Hadoop伪分布式模式配置
只有一台虚拟机bigdata128,既是namenode又是datanode。
(1)基础安装配置
JDK和Hadoop的安装及其相关环境配置
(2)修改Hadoop的5个配置文件 ①core-site.xml
在<configuration>与</configuration>之间添加如下 <property> <!--配置HDFS主节点,namenode的地址,9000是RPC通信端口--> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata128:9000</value> </property> <!--配置HDFS数据块和元数据保存的目录,一定要修改--> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.3/tmp</value> </property>②hdfs-site.xml
<!--注释配置数据块的冗余度,默认是3--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--secondaryNameNode的主机地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>bigdata128:50090</value> </property>③mapred-site.xml(该配置文件不存在,先复制)
cp mapred-site.xml.template mapred-site.xml <!--配置MR程序运行的框架--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>④yarn-site.xml
<!--配置Yarn的节点--> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata128</value> </property> <!--NodeManager执行MR任务的方式是Shuffle洗牌--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>⑤Slaves 文件里使用默认localhost,或者添加 bigdata128(既是NameNode又是DataNode) 注:如果Slaves文件为空,就没有DataNode和NodeManager。
⑥修改\etc\hosts配置文件 运行命令 vi \etc hosts ,添加虚拟机的ip及对应主机名:192.168.234.128 bigdata128
⑦修改\etc\hostname配置文件 运行命令 vi \etc hostname,添加虚拟机的主机名:bigdata128 重启虚拟机,主机名生效。
(3)格式化 hdfs namenode -format (如果不是第一次格式化,格式化之前先删除/opt/module/hadoop-2.7.3/下面的tmp、logs两个目录)
(4)启动 start-all.sh(如果启动之前已经启动过,启动之前先停止stop-all.sh) 查看伪分布式配置是否成功: ①执行ll,查看/opt/module/hadoop-2.7.3/tmp/dfs目录,如下图所示,则正确。 ②执行jps,如下图所示,NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager如果全部启动,伪分布式配置成功。 ③web控制台访问,页面正常显示,则成功。
(5)运行wordcount
hdfs dfs -put in.txt /adir 上传本地当前路径下的in.txt文件 到hdfs的/adir目录下。 运行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /adir/in.txt output/。 在web控制台查看/user/root/output/part-r-00000文件里的词频统计结果。
(6)SSH免密码登陆(解决每次启动hadoop输入用户密码问题) 生成公、私密钥对:ssh-keygen -t rsa 按3次回车键 查看:cd ~/.ssh路径下面的rd_rsa和rd_rsa.pub 复制:ssh-copy-id -i ~/.ssh/id_rsa.pub root@bigdata128 查看生成authorized_keys。
7.Hadoop完全分布式模式配置
(1)新建另外两台Linux虚拟机
完全分布式模式共三台虚拟机,前述伪分布式的虚拟机(bigdata128)作为master主节点,克隆另外两个虚拟机作为slaves子节点,克隆机自带安装JDK、Hadoop及配置文件。
(2)修改以下配置文件 ①slaves配置文件 三台虚拟机分别都运行命令 vi /opt/module/hadoop-2.7.3/etc/hadoop slaves修改slaves ②修改\etc\hosts配置文件 三台虚拟机分别都运行命令 vi \etc hosts,注释已有内容,添加集群三台虚拟机的ip及对应主机名, ③修改\etc\hostname配置文件 三台虚拟机分别都运行命令 vi \etc hostname,添加各自的主机名 重启全部虚拟机,主机名生效。
(3)格式化
在主节点bigdata128上面输入格式化命令(hdfs namenode -format),格式化集群。 注:如果不是第一次格式化,三台虚拟机都删除\opt\module\hadoop-2.7.3\下面的tmp、logs目录:rm –rf \opt\module\hadoop-2.7.3\tmp rm –rf \opt\module\hadoop-2.7.3\logs 注:如果格式化之前启动过集群,先在主节点bigdata128上面停止集群(stop-all.sh),再格式化。
(4)启动集群 在主节点bigdata128上面输入启动命令(start-all.sh),启动集群。 注:如果启动之前启动过集群,先在主节点bigdata128上面停止集群(stop-all.sh),再启动。 启动正常,输入jps命令,显示如下: 通过搭建Hadoop集群,我了解了自己的能力,明白只有不停地学习,才能掌握所学的知识。遇到问题,要学会请教和查阅资料,才能解决问题。也明白想要学好大数据必须下功夫,坚持学习,努力钻研才能有所收获。
