说明
下面不具体介绍linux下命令、安装Java环境等,重点介绍Hadoop安装及配置过程。
安装环境
操作系统:CentOS6.5
JDK版本:jdk 1.8(安装jdk此处不细说)
hadoop版本:hadoop-2.7.1
SSH(SSH Secure Shell Client):使用这个工具登录CentOS6.5系统操作
下载安装
1.登录系统,新建Hadoop文件存放目录,执行 mkdir /usr/local/hadoop。
2.进入/hadoop目录,执行 cd /usr/local/hadoop。
3.下载hadoop压缩文件,执行wget http://apache.mesi.com.ar/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
注:hadoop的安装包总站点是 http://hadoop.apache.org/#Download+Hadoop 上面列出hadoop各个版本可供下载,本文安装的是hadoop-2.7.1版本
如下图所示:
4.解压已下载的hadoop-2.7.1.tar.gz压缩文件,执行 tar -zxvf hadoop-2.7.1.tar.gz
Hadoop伪分布配置
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
本文以Hadoop伪分布式配置:Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java进程来运行,节点既作为NameNode也作为DataNode,同时,读取的是 HDFS 中的文件。
1.修改conf下的配置
注:Hadoop的配置文件位于 /usr/local/hadoop/hadoop-2.7.1/中,伪分布式需要修改2个配置文件core-site.xml、hdfs-site.xml和mapred-site.xml (暂不介绍)。Hadoop的配置文件是xml格式,每个配置以声明property的name 和value 的方式来实现。
2.修改配置文件 core-site.xml
core-site.xml为Hadoop的核心属性文件,参数为Hadoop的核心功能,独立于HDFS与MapReduce。
在core-site.xml文件中增加如下内容:
<!-- fs.default.name- 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hdfs/tmp</value>
</property>
其它参数列表说明,访问官方说明文档 http://hadoop.apache.org/docs/r2.7.1/
3.修改配置文件hdfs-site.xml
在conf/hdfs-site.xml中增加如下内容:
<!-- dfs.replication -它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- dfs.data.dir 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。-->
<property>
<name>dfs.name.dir</name>
<value>/home/hdfs/name</value>
</property>
<!-- dfs.name.dir- 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
<property>
<name>dfs.data.dir</name>
<value>/home/hdfs/data</value>
</property>
<!-- 解决:org.apache.hadoop.security.AccessControlException:Permission 因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop , 由于DrWho用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop -->
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories
</description>
</property>
其它参数列表说明,访问官方说明文档 http://hadoop.apache.org/docs/r2.7.1/
4.修改/etc/profile文件
在其文件中添加配置路径如下:
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.1
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
配置完成后执行 source /etc/profile 命令让环境变量生效,需要重启电脑。
HDFS启动操作命令
先执行 service iptables stop 关掉防火墙
1. 格式化工作空间
cd /usr/local/hadoop/hadoop-2.7.1/bin目录,运行 ./hadoop namenode –format
2. 启动HDFS
进入/usr/local/hadoop/hadoop-2.7.1/目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
start-all.sh 启动所有的Hadoop守护,包括namenode, datanode, jobtracker, tasktrack。
stop-all.sh 停止所有的Hadoop。
start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack。
stop-mapred.sh 停止Map/Reduce守护。
start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode。
stop-dfs.sh 停止DFS守护 。
HDFS文件操作常用命令
1. 查看文件列表
查看hdfs中/user/admin/hdfs目录下的文件。
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -ls /user/admin/hdfs
查看hdfs中/user/admin/hdfs目录下的所有文件(包括子目录下的文件)。
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -lsr /user/admin/hdfs
2. 创建文件目录
查看hdfs中/user/admin/hdfs目录下再新建一个叫做newDir的新目录。
进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -mkdir /user/admin/hdfs/newDir
3. 删除文件
删除hdfs中/user/admin/hdfs目录下一个名叫needDelete的文件
进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -rm /user/admin/hdfs/needDelete
删除hdfs中/user/admin/hdfs目录以及该目录下的所有文件
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -rmr /user/admin/hdfs
4. 上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/user/admin/hdfs目录下
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –put /home/admin/newFile /user/admin/hdfs/
5. 下载文件
下载hdfs中/user/admin/hdfs目录下的newFile文件到本机/home/admin/newFile中
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –get /user/admin/hdfs/newFile /home/admin/newFile
6. 查看文件内容
查看hdfs中/user/admin/hdfs目录下的newFile文件
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –cat /home/admin/newFile
其它命令说明,访问官方说明文档
web接口地址
启动hadoop后,可以通过WEB界面来查看,缺省端口为50070。
在浏览器中输入地址 http://ip:50070/(HDFS的页面) http://ip50030(MapReduce的页面)
查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
网页显示如下图:
此页面为Hadoop HDFS管理的界面