大数据相关框架讲义杨尚川1/44第一讲在win7上安装配置HADOOP伪分布式集群1、安装虚拟机和操作系统VMware-workstation-full-10.0.0或VirtualBox-4.2.18-88781-Win下载VMware下载VirtualBoxubuntu-13.04-server-amd64.iso下载ubuntu2、设置root用户密码sudopasswdroot3、上传文件利用WinSCP上传JDK和HADOOP文件,利用putty连接虚拟机中的ubuntu,下载WinSCP,下载putty,下载jdk,下载jdk4、配置JDK和HADOOPtar-xzvfjdk-7u40-linux-x64.tar.gztar-xzvfhadoop-1.2.1.tar.gzsudovi/etc/profile增加:exportJAVA_HOME=/home/ysc/jdk1.7.0_40exportPATH=$PATH:$JAVA_HOME/bin:/home/ysc/hadoop-1.2.1/binsource/etc/profile5、配置HADOOP配置主机名称及网络vi/etc/hostname指定名称为host001vi/etc/hosts替换内容为:192.168.137.128host001同时加入C:\Windows\System32\drivers\etc\hosts文件查看是否启用IPV6:cat/proc/sys/net/ipv6/conf/all/disable_ipv6显示0说明ipv6开启,1说明关闭关闭ipv6的方法:sudovi/etc/sysctl.conf增加下面几行,并重启#disableIPv6大数据相关框架讲义杨尚川2/44net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1配置SSHcd/home/yscsudoapt-getinstallopenssh-serverssh-keygen-trsa(密码为空,路径默认)cp.ssh/id_rsa.pub.ssh/authorized_keyssshhost001yescdhadoop-1.2.1配置HADOOP环境变量viconf/hadoop-env.sh增加:exportJAVA_HOME=/home/ysc/jdk1.7.0_40配置HADOOP运行参数viconf/masters改localhost为host001viconf/slaves改localhost为host001viconf/core-site.xmlpropertynamefs.default.name/namevaluehdfs://host001:9000/value/propertypropertynamehadoop.tmp.dir/namevalue/home/ysc/tmp/value/propertyviconf/hdfs-site.xmlpropertynamedfs.name.dir/namevalue/home/ysc/dfs/filesystem/name/value/propertypropertynamedfs.data.dir/namevalue/home/ysc/dfs/filesystem/data/value大数据相关框架讲义杨尚川3/44/propertypropertynamedfs.replication/namevalue1/value/propertyviconf/mapred-site.xmlpropertynamemapred.job.tracker/namevaluehost001:9001/value/propertypropertynamemapred.tasktracker.map.tasks.maximum/namevalue4/value/propertypropertynamemapred.tasktracker.reduce.tasks.maximum/namevalue4/value/propertypropertynamemapred.system.dir/namevalue/home/ysc/mapreduce/system/value/propertypropertynamemapred.local.dir/namevalue/home/ysc/mapreduce/local/value/property格式化名称节点并启动集群hadoopnamenode-format启动集群并查看WEB管理界面start-all.sh访问http://host001:50030可以查看JobTracker的运行状态访问http://host001:50060可以查看TaskTracker的运行状态访问http://host001:50070可以查看NameNode以及整个分布式文件系统的状态,浏览分布式文件系统中的文件以及log等hadoopjarhadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar-inputinput-outputoutput-streaming-mapper/bin/cat-reducer/usr/bin/wchadoopjarhadoop-1.2.1/hadoop-examples-1.2.1.jarwordcountinputoutput停止集群stop-all.sh大数据相关框架讲义杨尚川4/44第二讲建立开发环境编写HDFS和MAPREDUCE程序1、在eclipse中配置hadoop插件将hadoop-eclipse-plugin-1.2.1.jar复制到eclipse/plugins目录下,重启eclipse。2、打开MapReduce视图Window-OpenPerspective-Other选择Map/Reduce,图标是个蓝色的象。3、添加一个MapReduce环境在eclipse下端,控制台旁边会多一个Tab,叫“Map/ReduceLocations”,在下面空白的地方点右键,选择“NewHadooplocation...”,在弹出的对话框中填写如下内容:Locationname(取个名字)Map/ReduceMaster(JobTracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写)DFSMaster(NameNode的IP和端口,根据core-site.xml中配置的fs.default.name来填写)4、使用eclipse对HDFS内容进行操作经过上一步骤,左侧“ProjectExplorer”中应该会出现配置好的HDFS,点击右键,可以进行新建文件夹、删除文件夹、上传文件、下载文件、删除文件等操作。注意:每一次操作完在eclipse中不能马上显示变化,必须得刷新一下。5、创建MapReduce工程5.1配置Hadoop路径Window-Preferences选择“HadoopMap/Reduce”,点击“Browse...”选择Hadoop文件夹的路径。这个步骤与运行环境无关,只是在新建工程的时候能将hadoop根目录和lib目录下的所有jar包自动导入。5.2创建工程File-New-Project选择“Map/ReduceProject”,然后输入项目名称,创建项目。插件会自动把hadoop根目录和lib目录下的所有jar包导入。5.3创建Mapper或者ReducerFile-New-Mapper创建Mapper,自动继承mapred包里面的MapReduceBase并实现Mapper接口。注意:这个插件自动继承的是mapred包里旧版的类和接口,新版的Mapper得自己写。Reducer同理。6、实例:在eclipse中写一个WordCount程序并扩展、运行、调试、部署7、实例:在eclipse中演示如果通过程序操作HDFS8、用python编写MapReducevimapper.py输入:#!/usr/bin/envpython大数据相关框架讲义杨尚川5/44importsysforlineinsys.stdin:line=line.strip()words=line.split()forwordinwords:print'%s\t%s'%(word,1)chmod+xmapper.pyvireducer.py输入:#!/usr/bin/envpythonfromoperatorimportitemgetterimportsyscurrent_word=Nonecurrent_count=0word=Noneforlineinsys.stdin:line=line.strip()word,count=line.split('\t',1)try:count=int(count)exceptValueError:continueifcurrent_word==word:current_count+=countelse:ifcurrent_word:print'%s\t%s'%(current_word,current_count)current_count=countcurrent_word=wordifcurrent_word:print'%s\t%s'%(current_word,current_count)chmod+xreducer.py本地操作系统测试:echofoofooquuxlabsfoobarquux|./mapper.py|sort|./reducer.py提交HADOOP集群运行:hadoopjarhadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar-inputinput-outputoutput-streaming-python-mapper/home/ysc/mapper.py-reducer/home/ysc/reducer.py大数据相关框架讲义杨尚川6/44第三讲Hive–基于HADOOP的数据仓库wget:exportHIVE_HOME=/home/ysc/hive-0.10.0-binexportPATH=$PATH:$HIVE_HOME/binsource/etc/profilehadoopfs-mkdir/tmphadoopfs-mkdir/user/hive/warehousehadoopfs-chmodg+w/tmphadoopfs-chmodg+w/user/hive/warehousecpconf/hive-log4j.properties.templateconf/hive-log4j.properties如使用local模式:SETmapred.job.tracker=local;使用HADOOP集群(默认):SETmapred.job.tracker=host001:9001;本地使用hive服务:hive(如出现错误:MissingHiveBuiltinsJar:/home/ysc/hive-0.11.0-bin/lib