进行大数据开发一般都离不开Hadoop环境,Hadoop慢慢也变成了一个生态环境的代名词,这里记录一下Hadoop本地伪分布式环境的搭建。
操作系统 : manjaro-64bit 内存 : 8GB CPU : i7-4770S
tar xzvf hadoop-2.7.6.tar.gz
tar xzvf jdk-8u191-linux-x64.tar.gz
# JDK
export JAVA_HOME=/home/jony/apps/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
# HADOOP_HOME
export HADOOP_HOME=/home/jony/apps/hadoop-2.7.6
export PATH=$HADOOP_HOME/bin:$PATH
如果是bash环境下:
source ~/.bashrc
如果是zsh环境:
source ~/.zshrc
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:50000</value>
</property>
</configuration>
这里如果自己配置了hostname,可以使用自己配置的hostname替换localhost,默认使用localhost,端口信息也可以自己指定为未使用的端口。
<configuration>
<property>
<name>dfs.namenode.rpc-address</name>
<value>localhost:50000</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>localhost:50070</value>
</property>
<property>
<name>dfs.datanode.address</name>
<value>localhost:50010</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>localhost:50075</value>
</property>
<property>
<name>dfs.datanode.ipc.address</name>
<value>localhost:50020</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/jony/apps/hadoop-2.7.6/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/jony/apps/hadoop-2.7.6/tmp/data/0,/home/jony/apps/hadoop-2.7.6/tmp/data/1,/home/jony/apps/hadoop-2.7.6/tmp/data/2</value>
</property>
</configuration>
这里dfs.namenode.name.dir和dfs.datanode.data.dir可以根据自己的喜好进行配置,dfs.namenode.name.dir用于确定将HDFS文件系统的元信息保存在什么目录下。如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份。dfs.datanode.data.dir用于确定将HDFS文件系统的数据保存在什么目录下。
hdfs namenode -format
hdfs namenode
hdfs datanode
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode
hadoop fs -ls /
hadoop fs -mkdir /user/jony
将本地~/test.txt文件上传到HDFS的/user/jony目录下:
hadoop fs -put ~/test.txt /user/jony
or
hadoop fs -copyFromLocal ~/test.txt /user/jony
查看是否上传成功:
hadoop fs -ls /user/jony/test.txt
hadoop fs -text /user/jony/test.txt
或者
hadoop fs -cat /user/jony/test.txt
hadoop fs -get /user/jony/test.txt ~/test\_hdfs.txt
or
hadoop fs -copyToLocal /user/jony/test.txt ~/test\_hdfs.txt
<configuration>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/home/jony/apps/hadoop-2.7.6/tmp/yarn/0/logs,/home/jony/apps/hadoop-2.7.6/tmp/yarn/1/logs,/home/jony/apps/hadoop-2.7.6/tmp/yarn/2/logs</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/jony/apps/hadoop-2.7.6/tmp/yarn/0/local,/home/jony/apps/hadoop-2.7.6/tmp/yarn/1/local,/home/jony/apps/hadoop-2.7.6/tmp/yarn/2/local</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
yarn.nodemanager.log-dirs表示yarn日志存放地址(可配置多个目录)。yarn.nodemanager.local-dirs表示中间结果存放位置,这个参数通常会配置多个目录,以分摊磁盘IO负载。yarn.nodemanager.aux-services一般要配置为mapreduce_shuffle才能运行MapReduce程序。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
</configuration>
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar pi 5 10
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
到此Hadoop基本环境就配置完成了,主要是配置了HDFS和YARN,并运行了简单的MapReduce程序来测试YARN环境的搭建是否正确。
HDFS是分布式文件系统,是大数据基础的存储管理系统,用于管理分布式文件的存储,实现分布式文件的高可用、线性扩展。
YARN是资源调度管理系统,负责在任务运行时调度集群资源给任务使用。
Hadoop生态还有很多内容,这里先不展开,后续用到其他的工具时再单独记录。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。