一、环境
- 本机Mac,设置服务器ip的名称。
vim /etc/hosts
增加服务器ip 和 名称的映射关系:
120.xx.xxx.145 hadoop000 方便记忆
利用ssh登陆服务器:
Linux上,设置服务器内网ip和服务器名称的映射 「使用阿里云,搭建Hadoop时候应该用内网ip」
同样在/etc/hosts中修改,服务器名hadoop000创建相关的文件夹 mkdir hadoop
mkdir software 存放软件安装包
mkdir app 存放软件的安装目录
mkdir data 存放使用的数据
mkdir lib 存放开发的jar
mkdir shell 存放项目中的脚本
mkdir maven_resp 存放使用到的maven依赖- Hadoop安装前置要求 Java 1.8 (我用的Java11) 、 ssh
Java和ssh的配置略略
java -version
看到安装的版本号说明安装完成。
- ssh 免密登陆配置
ssh-keygen -t rsa
一路回车,在~/.ssh/中:
id_rsa 私钥
id_rsa.pub 公钥
将公钥写入authorized_keys
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
注意:
a. Hadoop集群中各个节点之间的访问(单一节点就是自己访问自己)需要配置免密登陆,否则后期启动NameNode,DataNode需要输密码
b. 后期Hadoop集群在阿里云服务器上,在IDEA上API编程访问Hadoop集群时候,也需要本地和服务器之间的免密登陆。即需要将本地机器的公钥写入服务器的authorized_keys
二、Hadoop安装目录详解及hadoop_env配置
- 采用CDH版本, 版本采用hadoop-2.6.0-cdh5.15.1 「注意后面用的hive版本的尾号也是cdh5.15.1,使用hive-1.1.0-cdh5.15.1」
下载:http://archive.cloudera.com/cdh5
下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
下载到服务器。并解压到相应目录
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1.tar.gz
mv ./hadoop-2.6.0-cdh5.15.1.tar.gz ~/hadoop/software
tar -zxvf hadoop-2.6.0-cdh5.15.1.tar.gz -C ~/hadoop/app
将Hadoop添加的环境变量
vim ~/.bash_profile- 目录内容详解
drwxr-xr-x 2 guoqiang guoqiang 4096 9月 2 01:00 bin
drwxr-xr-x 2 guoqiang guoqiang 4096 8月 10 2018 bin-mapreduce1
drwxr-xr-x 3 guoqiang guoqiang 4096 8月 10 2018 cloudera
drwxr-xr-x 6 guoqiang guoqiang 4096 8月 10 2018 etc
drwxr-xr-x 5 guoqiang guoqiang 4096 8月 10 2018 examples
drwxr-xr-x 3 guoqiang guoqiang 4096 8月 10 2018 examples-mapreduce1
drwxr-xr-x 2 guoqiang guoqiang 4096 8月 10 2018 include
drwxr-xr-x 3 guoqiang guoqiang 4096 8月 10 2018 lib
drwxr-xr-x 3 guoqiang guoqiang 4096 8月 10 2018 libexec
-rw-r--r-- 1 guoqiang guoqiang 85063 8月 10 2018 LICENSE.txt
drwxr-xr-x 2 guoqiang guoqiang 4096 9月 3 14:29 logs
-rw-r--r-- 1 guoqiang guoqiang 14978 8月 10 2018 NOTICE.txt
-rw-r--r-- 1 guoqiang guoqiang 1366 8月 10 2018 README.txt
drwxr-xr-x 3 guoqiang guoqiang 4096 9月 3 11:13 sbin
drwxr-xr-x 4 guoqiang guoqiang 4096 8月 10 2018 share
drwxr-xr-x 18 guoqiang guoqiang 4096 8月 10 2018 src
bin: hadoop 客户端命令
etc/hadoop :Hadoop相关的配置文件存放目录
sbin:启动Hadoop相关进程的脚本
share:常用工具
- 配置
a、配置JAVA_HOME
vim ./etc/hadoop/hadoop-env.sh
b、伪分布式单节点配置
etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop000:8020</value>
</property>
<--修改Hadoop文件的存放位置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/guoqiang/hadoop/app/tmp</value>
</property>
</configuration>
NOTE: 需要在/home/guoqiang/hadoop/app/下新建一个tmp文件夹,用来存放data
etc/hadoop/hdfs-site.xml
hadoop 默认3副本,但是我们搭建伪分布式,所以改为1
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
c、master/slave 结构
修改slaves
改为hadoop000
三、HDFS启动
NOTE:第一次启动的时候一定要格式化文件系统
- 格式化文件系统
hdfs namenode -format
格式化成功
- 启动
cd ./sbin
./start-dfs.sh
启动后,用jps命令查看:
NameNode,DataNode,SecondaryNameNode都正常启动起来了
NOTE:如果jps发现某个进程不存在,在$HADOOP_HOME/logs/ 的对应的log文件中,查看错误信息。
jps成功后,在http://hadoop000:50070 查看页面。
NOTE:如果一直打不开,可能是防火墙的问题。
查看防火墙状态:
sudo firewall-cmd --state
关闭防火墙:
systemctl stop firewalld.service
注意阿里云需要在管理界面开放50070等Hadoop环境需要的端口
- 停止
cd $HADOOP_HOME/sbin
./stop-dfs.sh
- 单个节点的启动
cd $HADOOP_HOME/sbin
./hadoop-daemons.sh start namenode
./hadoop-daemons.sh start datanode
start-dfs.sh / stop-dfs.sh 与 hadoop-daemons.sh 关系
start-dfs.sh =
hadoop-daemons.sh start namenode
hadoop-daemons.sh start datanode
hadoop-daemons.sh start secondarynamenode
stop-dfs.sh 同理
四、HDFS命令行操作
hadoop fs -ls /
hadoop fs -put
hadoop fs -copyFromLocal
hadoop fs -moveFromLocal
hadoop fs -cat
hadoop fs -text
hadoop fs -get
hadoop fs -mkdir
hadoop fs -mv
hadoop fs -getmerge
hadoop fs -rm
hadoop fs -rmdir
hadoop fs -rm -r