多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 下载 官网下载链接:http://mirror.bit.edu.cn/apache/hadoop/common/ # 修改配置文件 修改`/etc/hosts ` 增加本机ip和用户名的映射 1. hadoop-env.sh ~~~ export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64 ~~~ 2. workers ~~~ localhost ~~~ 3. mapred-site.xml ~~~ <!--指定mr运行在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ~~~ 4. core-site.xml ~~~ <!-- 指定hadoop所使用的文件系统schema(URI),HDFS老大(NameNode)的地址 --> <property> <name>fs.default.name</name> <!-- //注意这个得localhost为wokers里面设置的,没有修改就写localhost --> <value>hdfs://localhost:8020</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/etc/hadoopdata/dfs/name</value> </property> <property> <name>dfs.namenode.data.dir</name> <value>/usr/local/etc/hadoopdata/dfs/data</value> </property> ~~~ 5. yarn-site.yml ~~~ <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> ~~~ 6. hdfs-site.xml ~~~ <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/etc/hadoopdata/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/etc/hadoopdata/data</value> </property> <!-- <property> <name>dfs.namenode.http-address</name> <value>jdxia:9870</value> </property> --> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> ~~~ # 格式化hdfs ~~~ hadoop namenode -format ~~~ # httpFS配置 httpfs是什么? ~~~ 参考:http://debugo.com/hdfs-httpfs/ 官网:http://hadoop.apache.org/docs/r2.5.2/hadoop-hdfs-httpfs/ServerSetup.html http://hadoop.apache.org/docs/r2.5.2/hadoop-hdfs-httpfs/index.html ~~~ httpfs是通过http协议来访问hdfs,自带tomcat容器,在hadoop的 share/hadoop/httpfs/tomcat目录下。 HttpFS是提供REST HTTP接口的服务器,可以支持全部HDFS文件系统操作(读和写),它通过webhdfs REST HTTP API来进行交互。这个功能由cloudera提供给Apache主分支。 HttpFS可以用于在不同的Hadoop版本间传输数据(避免了RPC版本问题),例如使用Hadoop DistCP。 HTTP可以用于访问防火墙内的HDFS集群数据(HttpFS可以作为一个网关角色,是唯一可以穿过防火墙访问内部集群数据的系统)。 HttpFS可以通过HTTP工具(比如curl和wget)和各种编程语言的HTTP包(不局限Java)来访问数据。 webhdfs 客户端文件系统实现可以使用HDFS文件系统命令行命令(如hadoop dfs)以及使用HDFS Java API来访问HttpFS。 HttpFS内置安全特性支持Hadoop伪身份验证和HTTP SPNEGO Kerberos 和其他插件式(pluggable )验证机制。它还提供了Hadoop代理用户的支持 httpfs相关的配置文件: ~~~ etc/hadoop/httpfs-env.sh etc/hadoop/httpfs-log4j.properties etc/hadoop/httpfs-site.xml libexec/httpfs-config.sh sbin/httpfs.sh ~~~ ~~~ httpfs-signature.secret 将文件内容删除,置为空。 httpfs-site.xml 不需修改; hadoop-env.sh 设置hadoop环境变量; httpfs-config.sh 可设置httpfs进程的pid文件的地址 if [ "${CATALINA_PID}" = "" ]; then export CATALINA_PID=/tmp/httpfs.pid print "Setting CATALINA_PID: ${CATALINA_PID}" else print "Using CATALINA_PID: ${CATALINA_PID}" fi httpfs-env.sh 设置java_home 变量 export HTTPFS_LOG=/home/yoyo//yoyo_hdfs_httpfs/logs 日志路径; export HTTPFS_TEMP=/home/yoyo/yoyo_hdfs_httpfs/temp tmp文件路径 export HTTPFS_HTTP_PORT=14000 端口号 ~~~ core-site.xml,添加如下 ~~~ <property> <name>hadoop.proxyuser.jdxia.hosts</name> <value>*</value> <description>第二个hadoop是启动httpfs的用户名</description> </property> <property> <name>hadoop.proxyuser.staff.groups</name> <value>*</value> <description>第二个hadoop是启动httpfs的用户组名</description> </property> ~~~ 注意:`hadoop.proxyuser.{hadoop}.hosts`第二个是启动httpfs的用户名 如果是需要配置用户代理,需要在httpfs-site.xml中添加。 到此配置完毕,启动httpfs,进入hadoop sbin下,运行 ~~~ httpfs.sh start ~~~ 启动成功后jps会多一个Bootstrap 进程。 验证 `http://localhost:14000/webhdfs/v1?op=LISTSTATUS&user.name=jdxia 启动httpfs,在web浏览器访问查看页面是否有数据.` 上传数据: `curl -i -X PUT -T ./httpfs-localhost.2017-10-26.log "http://localhost:14000/webhdfs/v1/text.txt?op=CREATE&data=true&user.name=jdxia" -H "Content-Type:application/octet-stream"` 查看数据: `curl -i -X GET "http://localhost:14000/webhdfs/v1/text.txt?op=OPEN&user.name=jdxia"`