参考hadoop.apache.org给出的文档在kvm虚拟机中简单的运行了一个hadoop伪分布式节点,没想过几天又忘记了操作步骤,所以重新记录一次,做个总结。
1.下载安装ssh服务,官方推荐同时也安装pdsh,如果条件允许建议安装,顺便也可以了解一下。ssh服务安装之后,配置ssh登录不需要输入密码
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
通过在本地执行 ssl localhost 进行测试,如果不用输入密码就可以登录,说明一切正常
2.安装Java,并设置JAVA_HOME环境变量
3.下载并解压hadoop,本次安装的是最新alpha版本hadoop-3.0.0-alpha2,解压后将alpha2目录作个软连接,方便以后修改
$ln -s hadoop-3.0.0-alpha2 hadoop
类似于下面这样,当然hadoop不一定要放在/opt目录下面,依据个人爱好:
4.修改/opt/hadoop/etc/hadoop下面的配置文件
core-site.xml:
1 2 3 4 5 6 7 8 |
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://serv4:9000</value> </property> </configuration> |
serv4是虚拟机的主机名,如果这里配置主机名还需要在/etc/hosts中添加对应的条目
hdfs-site.xml:
1 2 3 4 5 6 7 8 |
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
因为是单台机器模拟,所以存储块备份设置为1
mapred-site.xml:
1 2 3 4 5 6 7 8 |
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |
yarn-site.xml:
1 2 3 4 5 6 7 8 9 10 11 12 |
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration> |
5.格式化namenode
$sbin/hdfs namenode -format
格式化之后,namenode存储目录默认生成在/tmp/hadoop_$USER下面
6.启动dfs和yarn
$ sbin/start-dfs.sh
$ sbin/start-yarn.sh
到这里已经可以登录http://localhost:9870访问web版的namenode了,登录http://localhost:8088可以查看资源管理
7.在HDFS系统上创建当前用户的根目录和input目录用于存放数据
$ bin/hdfs dfs -mkdir -p /user/admin1/input
创建好之后类似于下面这样:
试着通过put上载文件
$bin/hdfs dfs -mkdir input
$bin/hdfs dfs -put etc/hadoop/*.xml input
$bin/hdfs dfs -ls input
没有问题。官方示例里面用的是hdfs命令,实际中用bin/hadoop fs 操作也可以,就不知道这哪个在先哪个在后
8.运行hadoop默认提供的grep示例
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-alpha2.jar grep input output 'dfs'
正常情况下应该可以成功运行并在HDFS的output目录下输出两个文件 _SUCCESS和part-r-*****,通过get可以取回HDFS上面的文件到本地
$ bin/hdfs dfs -get output output
查看运行结果:
9.停止yarn和dfs
$sbin/stop-yarn.sh
$sbin/stop-dfs.sh