Hadoop基本概念(不存进数据库,直接存为文本文件,直接处理文本,有数据库是nosql数据库):
原来数据量大,我们一般是想的是高并发,现在可采用多台电脑来做(集群);
海量数据存储(HDFS:分布式的存储系统)
海量数据分析(MapReduce:你负责逻辑编写,他负责按你的逻辑进行计算)
资源管理调度(YARN:负责资源管理调度)
搜索引擎的一个框架:
hadoop数据处理思路(mapreduce演示):
1.map阶段:将逻辑分发到每个节点(多台电脑),进行一个datenode进行并发计算(本地),map阶段进行局部统计;
2.reduce阶段:获取map结果(一台电脑),进行结果计算(网络),reduce进行全局处理;
伪分布式Hadoop集群安装:
1.准备Linux环境 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 -> apply -> ok 回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.1.110 子网掩码:255.255.255.0 -> 点击确定 在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok 1.1修改主机名 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=xp ### 1.2修改IP 两种方式: 第一种:通过Linux图形界面进行修改startx打开图形界面(强烈推荐) 进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.119 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply 第二种:修改配置文件方式(屌丝程序猿专用) vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" ### HWADDR="00:0C:29:3C:BF:E7" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c" IPADDR="192.168.1.44" ### NETMASK="255.255.255.0" ### GATEWAY="192.168.1.1" ### 1.3修改主机名和IP的映射关系 vim /etc/hosts 192.168.1.44 xp 1.4关闭防火墙 #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables off 1.5重启Linux reboot 2.安装JDK 2.1上传 2.2解压jdk #创建文件夹 mkdir /usr/java #解压 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/ 2.3将java添加到环境变量中 vim /etc/profile #在文件最后添加 export JAVA_HOME=/usr/java/jdk1.7.0_55 export PATH=$PATH:$JAVA_HOME/bin #刷新配置 source /etc/profile 3.安装Hadoop 3.1上传hadoop安装包 3.2解压hadoop安装包 mkdir /cloud #解压到/cloud/目录下 tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/ 3.3修改配置文件(5个) 第一个:hadoop-env.sh #在27行修改 export JAVA_HOME=/usr/java/jdk1.7.0_55 第二个:core-site.xml <configuration> <!-- 指定HDFS老大(namenode)的通信地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://xp:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储路径 --> <property> <name>hadoop.tmp.dir</name> <value>/cloud/hadoop-2.2.0/tmp</value> </property> </configuration> 第三个:hdfs-site.xml <configuration> <!-- 设置hdfs副本数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 第四个:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml <configuration> <!-- 通知框架MR使用YARN --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 第五个:yarn-site.xml <configuration> <!-- reducer取数据的方式是mapreduce_shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 3.4将hadoop添加到环境变量 vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_55 export HADOOP_HOME=/cloud/hadoop-2.2.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin source /etc/profile 3.5格式化HDFS(namenode)第一次使用时要格式化 hadoop namenode -format 3.6启动hadoop 先启动HDFS sbin/start-dfs.sh 再启动YARN sbin/start-yarn.sh 3.7验证是否启动成功 使用jps命令验证 27408 NameNode 28218 Jps 27643 SecondaryNameNode 28066 NodeManager 27803 ResourceManager 27512 DataNode http://192.168.1.44:50070 (HDFS管理界面) 在这个文件中添加linux主机名和IP的映射关系 C:\Windows\System32\drivers\etc\hosts 192.168.1.119 xp http://192.168.1.44:8088 (MR管理界面) 4.配置ssh免登陆 生成ssh免登陆密钥 cd ~,进入到我的home目录 cd .ssh/ ssh-keygen -t rsa (四个回车) 执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 将公钥拷贝到要免登陆的机器上 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 或 ssh-copy-id -i localhost
hdfs实现机制:比如存一个512M的文件,
总结:hdfs的实现思想:1,hdfs是通过分布式集群来存储文件,为用户提供了一个便捷的访问方式(虚拟目录)
2,文件存储到hdfs集群中是被切割分成block(默认128m)的
3,文件的block是存在若干的DataNode节点上的
4,hdfs文件系统中的文件与真实的block之间存在 映射关系,有namenode管理
5,每一个block在集群中都有多个副本,提高数据的可靠性与吞吐量