最近公司有个采集日志到oss的任务,需要用到hdfs的环境做个透传,因为我们的要采集的日志分布在好几十个单独的服务器其中有linux,又有windows,采集最后商量要使用的flume,但是flume不能直接传到oss需要用到hdfs进行“透传”一下,所以也不需要部署分布式了,又因为linux服务器资源紧缺,想让我调研一下能不能在windows服务器上搭建一个单机版的hadoop,所以就有了今天这篇文章。
以上图片为配置java的环境变量,hadoop的环境变量和java环境变量配置过程相同,路径换成你上一步解压之后的hadoop路径即可,因为hadoop是需要java环境的所以机器上要提前安装好java(java的路径最好不要有空格,如果有空格的话,需要在hadoop_env.cmd文件中将java的路径有双引号括起来
)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/hadoop/data/dfs/namenodevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/hadoop/data/dfs/datanodevalue>
property>
configuration>
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
configuration>
修改JAVA_HOME(路径有空格需双引号括起来
)
set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_131"
由于hadoop不能直接直接在windows环境下启动,需要依赖hadoop的winutils
这里给出两个下载路径首先是githttps://github.com/cdarlint/winutils
如果大家在git上下载不下来,或者下载慢,这里提供一个百度网盘的下载路径https://pan.baidu.com/s/1a5et7e6oLir2dgABPJkgqg?pwd=yyds
下载好之后,挑选和你hadoop相同的版本,将bin中的内容直接拷贝到你安装的hadoopbin目录下,有重复的替换即可。
第一次启动需要初始化名字节点,初始化名字节点之前请确保 在上面配置的hdfs-site.xml文件中的namenode目录为空,切换到hadoop的bin目录下,输入一下内容
hadoop namenode -format
看到successfully证明成功初始化。
之后切换到hadoop安装目录下的sbin目录,输入以下内容:
start-all.cmd
会依次弹出四个命令框,分别为namenode、datanode、resourcemanager、nodemanager
这时打开浏览器输入:
localhost:9870
会出现以下内容:
切换到hadoop下的bin目录,输入
hdfs dfs -mkdir /tset
随意上传一个文件
hdfs dfs -put “你的文件路径” /test
我这里是上传了一个jar包