下载

官网下载链接:http://mirror.bit.edu.cn/apache/hadoop/common/

修改配置文件

修改/etc/hosts
增加本机ip和用户名的映射

  1. hadoop-env.sh
  1. export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
  1. workers
  1. localhost
  1. mapred-site.xml
  1. <!--指定mr运行在yarn上-->
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  1. core-site.xml
<!-- 指定hadoop所使用的文件系统schema(URI),HDFS老大(NameNode)的地址 -->
<property>
    <name>fs.default.name</name>
    <!-- //注意这个得localhost为wokers里面设置的,没有修改就写localhost,9000也可以 -->
    <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>
  1. yarn-site.yml
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
  1. 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"