Mac上第一个eclipse编译的Hadoop程序
来源:互联网 发布:端口参数液晶智能电视 编辑:程序博客网 时间:2024/06/05 18:12
参考博客
手把手教你安装mac版hadoop2.7.3教程
Mac Hadoop的安装与配置
Win下Eclipse提交hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied:
Mac上的第一个hadoop小demo
Mac OSX下配置和启动hadoop以及常见错误解决
hadoop学习之二:mac下hadoop+eclipse环境搭建
目录
- Hadoop的下载安装
- SSH免密登陆
- eclipse下Hadoop插件的安装
- 编写第一个Hadoop程序
Hadoop的下载安装
安装java环境,配置环境变量
使用brew下载安装
brew install hadoop
默认安装目录
/usr/local/Cellar/hadoop
安装完成后的目录
定位到Hadoop的安装目录下
修改/etc/hadoop/hadoop-env.sh
export JAVA_HOME=jdk的安装目录
修改配置文件
- core-site.xml
- hadfs-site.xml
- mapred-site.xml
- yarn-site.xml
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
mapred-site.xml
如果不存在则创建一个 (可以复制一下mapred-site.xml.template文件再进行修改)
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
配置免密登陆
定位到当前用户目录下,我的是koukouken
用dsa密钥认证来生成一对公钥和私钥:
ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa
将生成的公钥加入到用于认证的公钥文件中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost判读是否登陆成功
如果所示则登陆成功
Hadoop的启动
- 进入Hadoop的目录,以mac系统为例目录为
/usr/local/Cellar/hadoop/2.7.2/libexec
格式化文件系统
hdfs namenode -format
- 启动NameNode和DataNode的守护进程。
sbin/start-dfs.sh
- 启动ResourceManager和NodeManager的守护进程
sbin/start-yarn.sh
- 访问localhost:50070和localhost:8088测试是否正常
- 创建hdfs目录:
hdfs dfs -mkdir -p /user/robin/input
- 拷贝一些文件到input目录:
hdfs dfs -put etc/hadoop input
- 运行样例: (下面命令中的hadoop版本号是2.8.1,根据你自己的hadoop版本修改版本号)
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar grep input output ‘dfs[a-z.]+’
- 在localhost:50070中的Utilities标签下找到/user/robin目录,下载part-r-00000文件,可以看到其中内容如下所示:
这个地方我什么都没有显示
4 dfs.class
4 dfs.audit.logger
3 dfs.server.namenode.
2 dfs.period
2 dfs.audit.log.maxfilesize
2 dfs.audit.log.maxbackupindex
1 dfsmetrics.log
1 dfsadmin
1 dfs.servers
1 dfs.replication
1 dfs.file
eclipse下Hadoop插件的安装
插件下载地址
将jar 拷贝到eclipse的plugins目录下,重启eclipse,定位Hadoop目录下:
修改中间的install目录为Hadoop安装的目录
编写第一个Hadoop程序
新建一个Hadoop项目
配置 Map/Reduce Locations
Windows—show view—Other—— Map…
新建一个Hadoop local,我的端口为9000,点击确定
在右侧DFS就会出现你创建的Hadoop local,点击就能看到你创建的文件目录
新建HdfsClientDemo.java
中间的koukouken是我的用户名,需要改成你对应的用户名
package testHadoop;import java.net.URI;import java.util.Iterator;import java.util.Map.Entry;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.LocatedFileStatus;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.RemoteIterator;import org.junit.Before;import org.junit.Test;/** * * 客户端去操作hdfs时,是有一个用户身份的 * 默认情况下,hdfs客户端api会从jvm中获取一个参数来作为自己的用户身份:-DHADOOP_USER_NAME=koukouken * * 也可以在构造客户端fs对象时,通过参数传递进去 * @author * */public class HdfsClientDemo { FileSystem fs = null; Configuration conf = null; @Before public void init() throws Exception{ conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); //拿到一个文件系统操作的客户端实例对象 /*fs = FileSystem.get(conf);*/ //可以直接传入 uri和用户身份 fs = FileSystem.get(new URI("hdfs://localhost:9000"),conf,"koukouken"); //最后一个参数为用户名 } @Test public void testUpload() throws Exception { Thread.sleep(2000); fs.copyFromLocalFile(new Path("/Users/koukouken/hadoop/access.log"), new Path("/access.log.copy")); fs.close(); } @Test public void testDownload() throws Exception { fs.copyToLocalFile(new Path("/access.log.copy"), new Path("/Users/koukouken/hadoop")); fs.close(); } @Test public void testConf(){ Iterator<Entry<String, String>> iterator = conf.iterator(); while (iterator.hasNext()) { Entry<String, String> entry = iterator.next(); System.out.println(entry.getValue() + "--" + entry.getValue());//conf加载的内容 } } /** * 创建目录 */ @Test public void makdirTest() throws Exception { boolean mkdirs = fs.mkdirs(new Path("/user/aaa/bbb")); System.out.println(mkdirs); } /** * 删除 */ @Test public void deleteTest() throws Exception{ boolean delete = fs.delete(new Path("/user/aaa"), true);//true, 递归删除 System.out.println(delete); } @Test public void listTest() throws Exception{ FileStatus[] listStatus = fs.listStatus(new Path("/")); for (FileStatus fileStatus : listStatus) { System.err.println(fileStatus.getPath()+"================="+fileStatus.toString()); } //会递归找到所有的文件 RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true); while(listFiles.hasNext()){ LocatedFileStatus next = listFiles.next(); String name = next.getPath().getName(); Path path = next.getPath(); System.out.println(name + "---" + path.toString()); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); //拿到一个文件系统操作的客户端实例对象 FileSystem fs = FileSystem.get(conf); fs.copyFromLocalFile(new Path("/Users/koukouken/hadoop/access.log"), new Path("/access.log.copy")); fs.close(); }}
执行完中间的测试代码,点击如图所示Disconnect即可看到文件是否创建成功
可能出现一些权限的错误,Hadoop修改权限的方式
hadoop fs -chmod 777 /user/koukouken
- Mac上第一个eclipse编译的Hadoop程序
- Mac上的第一个hadoop小demo
- Mac上运行第一个Hadoop实例
- hadoop在Eclipse上运行的第一个工程
- 编译并打包第一个Hadoop程序
- Eclipse里编写第一个Hadoop程序
- eclipse下运行第一个hadoop程序
- 第一个hadoop程序
- 第一个Hadoop程序
- 第一个Hadoop程序
- 第一个hadoop程序
- Hadoop-第一个Hadoop程序
- Hadoop的第一个程序 wordcount
- hadoop的第一个程序wordcount实现
- hadoop的第一个程序WordCount
- Xcode的第一个mac程序
- [OpenGL学习] mac上运行第一个openGL程序
- 在 mac os 上运行 kotlin native 的第一个程序:hello world
- 1_电脑知识积累
- Qt: error link1158 无法运行rc.exe
- implements Runnable与extends Thread 的区别
- DFS:695. Max Area of Island
- Linux下 PyopenGL运行libGL报错,解决方案
- Mac上第一个eclipse编译的Hadoop程序
- 用c2制作游戏~
- 深度网络模型压缩
- linux下并行运行脚本与让程序可靠运行
- Fibonacci数列
- PC端不同浏览器的兼容问题及解决方案
- HTML5头部——meta
- ImproperlyConfigured No URL to redirect to. Either provide a url or define a get_absolute_url metho
- File