HADOOP集群配置记录

查了很多资料,在这里总结一下hadoop集群的搭建注意事项。

一、分配IP,设置免密登陆

确定好hadoop集群中所有主机(包括master与所有slave)的ip地址,确保主机间使用ip能够相互ping通:

主机号ip
主机1(Celesto)192.168.126.130
主机2(hadoop2)192.168.126.132
主机3(hadoop3)192.168.126.133

对于每个主机,在/etc/hostname/中修改主机名,方便辨别。改名后需重启主机。

对于集群中的所有主机,都需要把包括自身在内的所有主机ip写入/etc/hosts中:

echo '192.168.126.130 celesto' >>/etc/hosts
echo '192.168.85.132 hadoop2' >>/etc/hosts
echo '192.168.85.133 hadoop3' >>/etc/hosts

免密登陆

在所有虚拟机中分别执行

ssh-keygen -t rsa

连续三次回车,在/root/.ssh中生成密钥:id_rsa.pub

使用命令 touch /root/.ssh/authorized_keys 生成文件

免密码登陆自身(所有机器均要操作):

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh localhost(首次需输入yes)

master免密码登陆slave(仅在master操作):

ssh-copy-id -i ~/.ssh/id_rsa.pub celesto
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop3

此时即做到了master免密登陆所有slave。若想设置任何的A主机免密码登陆B主机,则将A主机的密钥发送至B主机即可(即B主机存了A主机的密钥,等于发了一张A主机的通行证),即在A主机上进行上述操作。

免密登陆测试(在maaster上):

ssh hadoop2    # 不用密码即成功
exit

二、在master上安装jdk,hadoop并配置环境变量

jdk安装及环境变量配置:

创建JAVA目录,解压
mkdir -p /usr/local/java
tar -zxf jdk-8u65-linux-x64.tar.gz -C /usr/local/java/
配置环境变量
vi /etc/profile

# JAVA
JAVA_HOME=/usr/local/java/jdk1.8.0_201
JRE_JOME=/usr/local/java/jdk1.8.0_201/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_JOME CLASS_PATH PATH

保存退出后,输入

source /etc/profile

刷新环境变量

Hadoop安装及环境变量配置(3.1.1版本):

创建hadoop目录,解压
mkdir -p /usr/local/hadoop
tar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/
配置环境变量
# HADOOP
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

随后

source /etc/profile

三、在master上配置hadoop(注意主机名的修改变化)

创建目录
cd /usr/local/hadoop/
mkdir tmp     
mkdir var  
mkdir dfs  
mkdir dfs/name  
mkdir dfs/data  

进入hadoop配置文件目录

cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoop
vi workers
# 添加slave主机名
hadoop2
hadoop3
修改hadoop-env.sh
# 在JAVA_HOME=/usr/java/testing hdfs dfs -ls下添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改core-site.xml
<configuration>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
    <description>A base for other temporary directories.</description>
</property>
<property>
    <name>fs.default.name</name>
    <value>hdfs://Celesto:9000</value>
</property>
<property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
</property>
</configuration>
修改hdfs-site.xml
<configuration>
<property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop/dfs/name</value>
    <description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop/dfs/data</value>
    <description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
    <name>dfs.namenode.http-address</name>
    <value>Celesto:50070</value>
</property>
<property>
    <name>dfs.namenode.secondary.http_address</name>
    <value>Celesto:50090</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
    <description>No need permissions</description>
</property>
</configuration>
修改yarn-site.xml

首先输入如下命令,并将内容复制

hadoop classpath
<configuration>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Celesto</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.application.classpath</name>
    <value>复制的hadoop classpath地址</value>
</property>
<!-- Site specific YARN configuration properties -->

</configuration>
修改mapred-site.xml
<configuration>
<property>
    <name>mapred.job.tracker</name>
    <value>Celesto:49001</value>
</property>
<property>
    <name>mapred.local.dir</name>
    <value>/usr/local/hadoop/var</value>
</property>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
</configuration>

四、同步

将在master主机上设置好的jdk、hadoop与环境变量同步到所有slave主机上(这里只写一台主机)

scp -r /usr/local/java hadoop2:/usr/local/java
scp -r /usr/local/hadoop hadoop2:/usr/local/hadoop
scp -r /etc/profile hadoop2:/etc/
source /etc/profile

五、启动(在master上操作)

格式化节点(只需要在第一次启动前执行,以后都不需要执行,否则会产生namenode消失的错误)

在master中运行

hdfs namenode -format

启动、停止hadoop集群

start-all.sh
stop-all.sh

在浏览器上输入http://192.168.126.130:8088(前者为主节点ip地址,后者为hdfs的web进程对应的端口号)

六、文件的上传与查看

查看指定目录下内容
hdfs dfs –ls [文件目录]
hdfs dfs –ls /user/wangkai.pt
打开某个已存在文件
hdfs dfs –cat [file_path]
hdfs dfs -cat /user/wangkai.pt/data.txt
将本地文件存储至hadoop
hdfs dfs –put [本地地址] [hadoop目录]
hdfs dfs –put /home/t/file.txt  /user/t  
将本地文件夹存储至hadoop
hdfs dfs –put [本地目录] [hadoop目录] 
hdfs dfs –put /home/t/dir_name /user/t
将hadoop上某个文件down至本地已有目录下
hadoop dfs -get [文件目录] [本地目录]
hadoop dfs –get /user/t/ok.txt /home/t
删除hadoop上指定文件
hdfs  dfs –rm [文件地址]
hdfs dfs –rm /user/t/ok.txt
删除hadoop上指定文件夹(包含子目录等)
hdfs dfs –rm [目录地址]
hdfs dfs –rmr /user/t
在hadoop指定目录内创建新目录
hdfs dfs –mkdir /user/t
hdfs  dfs -mkdir - p /user/centos/hadoop
在hadoop指定目录下新建一个空文件
hdfs dfs  -touchz  /user/new.txt
将hadoop上某个文件重命名
hdfs dfs –mv  /user/test.txt  /user/ok.txt   #将test.txt重命名为ok.txt
将hadoop指定目录下所有内容保存为一个文件,同时down至本地
hdfs dfs –getmerge /user /home/t
将正在运行的hadoop作业kill掉
hadoop job –kill  [job-id]
其他

hadoop fs, hdfs dfs的区别

hadoop fs:
FS relates to a generic file system which can point to any file systems like local, HDFS etc. So this can be used when you are dealing with different file systems such as Local FS, HFTP FS, S3 FS, and others
意思是说该命令可以用于其他文件系统,不止是hdfs文件系统内,也就是说该命令的使用范围更广

hadoop dfs
专门针对hdfs分布式文件系统

hdfs dfs
和上面的命令作用相同,相比于上面的命令更为推荐,并且当使用hadoop dfs时内部会被转为hdfs dfs命令

总结
hdfs dfs  查看Hadoop HDFS支持的所有命令   
hdfs dfs –ls  列出目录及文件信息   
hdfs dfs –lsr  循环列出目录、子目录及文件信息   
hdfs dfs –put test.txt /user/sunlightcs  将本地文件系统的test.txt复制到HDFS文件系统的/user/sunlightcs目录下   
hdfs dfs –get /user/sunlightcs/test.txt .  将HDFS中的test.txt复制到本地文件系统中,与-put命令相反   
hdfs dfs –cat /user/sunlightcs/test.txt  查看HDFS文件系统里test.txt的内容   
hdfs dfs –tail /user/sunlightcs/test.txt  查看最后1KB的内容   
hdfs dfs –rm /user/sunlightcs/test.txt  从HDFS文件系统删除test.txt文件,rm命令也可以删除空目录   
hdfs dfs –rmr /user/sunlightcs  删除/user/sunlightcs目录以及所有子目录   
hdfs dfs –copyFromLocal test.txt /user/sunlightcs/test.txt  从本地文件系统复制文件到HDFS文件系统,等同于put命令   
hdfs dfs –copyToLocal /user/sunlightcs/test.txt test.txt  从HDFS文件系统复制文件到本地文件系统,等同于get命令   
hdfs dfs –chgrp [-R] /user/sunlightcs  修改HDFS系统中/user/sunlightcs目录所属群组,选项-R递归执行,跟linux命令一样   
hdfs dfs –chown [-R] /user/sunlightcs  修改HDFS系统中/user/sunlightcs目录拥有者,选项-R递归执行   
hdfs dfs –chmod [-R] MODE /user/sunlightcs  修改HDFS系统中/user/sunlightcs目录权限,MODE可以为相应权限的3位数或+/-{rwx},选项-R递归执行
hdfs dfs –count [-q] PATH  查看PATH目录下,子目录数、文件数、文件大小、文件名/目录名   
hdfs dfs –cp SRC [SRC …] DST       将文件从SRC复制到DST,如果指定了多个SRC,则DST必须为一个目录   
hdfs dfs –du PATH  显示该目录中每个文件或目录的大小   
hdfs dfs –dus PATH  类似于du,PATH为目录时,会显示该目录的总大小   
hdfs dfs –expunge  清空回收站,文件被删除时,它首先会移到临时目录.Trash/中,当超过延迟时间之后,文件才会被永久删除   
hdfs dfs –getmerge SRC [SRC …] LOCALDST [addnl]      获取由SRC指定的所有文件,将它们合并为单个文件,并写入本地文件系统中的LOCALDST,选项addnl将在每个文件的末尾处加上一个换行符   
hdfs dfs –touchz PATH   创建长度为0的空文件   
hdfs dfs –test –[ezd] PATH     对PATH进行如下类型的检查:  -e PATH是否存在,如果PATH存在,返回0,否则返回1  -z 文件是否为空,如果长度为0,返回0,否则返回1  -d 是否为目录,如果PATH为目录,返回0,否则返回1   
hdfs dfs –text PATH  显示文件的内容,当文件为文本文件时,等同于cat,文件为压缩格式(gzip以及hadoop的二进制序列文件格式)时,会先解压缩    hdfs dfs –help ls  查看某个[ls]命令的帮助文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值