下载
官网下载链接:http://mirror.bit.edu.cn/apache/hadoop/common/
修改配置文件
修改/etc/hosts
增加本机ip和用户名的映射
- hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
- workers
localhost
- mapred-site.xml
<!--指定mr运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 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>
- yarn-site.yml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
- 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"