英杰926

导航

hadoop安装(Centos7)

前奏

1、 然后修改主机名,方便集群间的访问

修改:hostnamectl set-hostname  centos1

查看:hostname

2、 修改域名解析映射文件(添加新行)使得后续可以直接通过主机名访问

vi /etc/hosts

#内容最后添加一新行

192.168.190.130 cenos1

192.168.190.131 centos2

192.168.190.132 centos3

 

service network restart  #重启下网卡服务

reboot  #重新启动

ping centos1  #测试是否生效

3、 关闭防火墙,禁止开机启动

firewall-cmd --state  #查看防火墙状态

systemctl stop firewalld.service  #停止防火墙

systemctl disable firewalld.service  #禁止防火墙开机启动

4、关闭selinux

vim /etc/sysconfig/selinux

修改内容SELINUX=disabled

SELINUXTYPE=targeted  注释掉

scp /etc/sysconfig/selinux centos2:/etc/sysconfig/

scp /etc/sysconfig/selinux centos3:/etc/sysconfig/

下载

http://mirrors.shu.edu.cn/apache/hadoop/common/

hadoop-2.7.7.tar.gz

后来换成了hadoop-2.6.5.tar.gz 为了安装oozie

安装

cd /usr/local

rz

tar xzvf hadoop-2.7.7.tar.gz

rm -rf hadoop-2.7.7.tar.gz

mv hadoop-2.7.7.tar.gz Hadoop

配置环境变量

vim /etc/profile  #配置环境变量,进入到最下面开始配置:

export HADOOP_HOME=/usr/local/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

wq

配置hadoop-env.sh、yarn-env.sh、mapred-env.sh(3个系统都改)

vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

修改:export JAVA_HOME=${JAVA_HOME} 为: export JAVA_HOME=/usr/local/jdk

wq

 

vim /usr/local/hadoop/etc/hadoop/yarn-env.sh

export JAVA_HOME=/usr/local/jdk

 

vim /usr/local/hadoop/etc/hadoop/mapred-env.sh

export JAVA_HOME=/usr/local/jdk

 

source /etc/profile  #立刻生效

测试

hadoop分布式配置完之后测试,确保hadoop启动,确保有相应的目录。

hadoop version

此时一个最基础的hadoop环境(这不是开发环境),测试一下hadoop中自带的一个测试程序(实现wordcount“hadoop界的hello word”)

cd /usr/local/hadoop

mkdir input

echo hello sm hello zhangsan hello lisi hi sm >input/info.txt

cd input

cat info.txt

cd /usr/local/hadoop

 

hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.7-sources.jar org.apache.hadoop.examples.WordCount input output

 

cd output

ll

0

 

hdfs上的测试:

hadoop fs -put /songtemptest/worldcount.txt /test/input

cd /usr/local/hadoop/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test/input /test/output

分布式系统的hadoop的配置

ssh的免登录处理

ll ~  #如果有配置过ssh要进行删除

rm -rf ~/.ssh

 

ssh-keygen -t rsa  #在centos1的主机上生成ssh key

一路enter 默认处理方式

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  #将公钥拷贝到授权文件中

ssh root@centos1  #登录

exit  #退出登录

 

注:同步其它机器:ssh-copy-id centos2

 

配置:core-site.xml Hadoop的核心信息,包括临时目录、访问地址等

配置:yarn-site.xml 配置相关的job的处理

配置:hdfs-site.xml 非常重要,可以确定文件的备份个数以及数据文件夹的路径

配置:core-site.xml(3个系统都修改)

core-site.xml 是Hadoop的核心信息,包括临时目录、访问地址等

vim /usr/local/hadoop/etc/hadoop/core-site.xml

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/home/root/hadoop_tmp</value>

        <description>Abase for other temporary directories.</description>

    </property>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://centos1:9000</value>

    </property>

</configuration>

“/home/root/hadoop_tmp”信息,最为重要,这个文件路径配置的临时文件信息,如果不配置,那么就会在hadoop的文件夹里面生成“tmp”文件(很多人会设置在“/user/local/hadoop/tmp”),如果这样配置,一旦重新启动,所有的信息都会被清空,也就是说此时hadoop的环境就失效了。

centos1:9000”信息,描述的是日后打开的页面管理器的路径;

hadoop 2.x版本默认端口9000,如果使用1.x版本,默认是8020。

为了保证整体的运行不出错,可以直接建立好一个“/home/root/hadoop_tmp”目录;

cd ~

mkdir hadoop_tmp

配置:yarn-site.xml(只修改master节点)

yarn-site.xml 配置相关的job的处理

vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

<configuration>

    <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>centos1:8033</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>centos1:8025</value>

    </property>

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>centos1:8030</value>

    </property>

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>centos1:8050</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>centos1:8088</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.https.address</name>

        <value>centos1:8090</value>

    </property>

</configuration>

配置:hdfs-site.xml(3个系统都修改)

hdfs-site.xml 非常重要,可以确定文件的备份个数以及数据文件夹的路径

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:///usr/local/hadoop/dfs/name</value>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:///usr/local/hadoop/dfs/data</value>

    </property>

    <property>

        <name>dfs.namenode.http-address</name>

        <value>centos1:50070</value>

    </property>

    <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>centos1:50090</value>

    </property>

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

    </property>

<property>

             <name>dfs.namenode.datanode.registration.ip-hostname-check</name>

             <value>false</value>

</property>

</configuration>

“dfs.replication”:文件的副本数,一般情况下,文件会备份3份;

“dfs.namenode.name.dir”:定义名称节点的路径;

“dfs.datanode.data.dir”:定义数据文件节点的路径;

“dfs.namenode.http-address”:名称服务的http路径访问;

“dfs.namenode.secondary.http-address”:第二名称节点;

“dfs.permissions”:权限认证问题,因为如果设置了,有可能以后无法进行文件访问;

dfs.namenode.datanode.registration.ip-hostname-check为false hadoop2.7.7版本要配置这个,要不上传文件是提示:“Datanode denied communication with namenode because hostname cannot be resolved (ip=192.168.190.138, hostname=192.168.190.138)” tm的读ipv6去了,实际应该是ipv4的ip。

配置:mapred-site.xml(只修改master节点)

cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

<configuration>

    <property>

              <name>mapreduce.framework.name</name>

              <value>yarn</value>

</property>

</configuration>

其他配置

创建文件masters、slaves

vim /usr/local/hadoop/etc/hadoop/masters  #加入“centos1”

 

vim /usr/local/hadoop/etc/hadoop/slaves  #把“localhost”改成

centos2

centos3

 

hadoop属于分布式的开发环境,考虑到日后要进行集群的搭建;

建议在“/usr/local/hadoop/etc/hadoop/”目录创建一个masters文件,里面写上主机的名称,内容就是centos1(之前再hosts文件里面定义的主机名称):如果是单机环境不写,也没关系

 

创建文件夹name、data

cd /usr/local/hadoop

mkdir dfs dfs/name dfs/data

 

由于此时是将所有的namenode、datanode保存路径设置在hadoop目录中,如果为了保险起见,可以自己创建;

注意:如果你的hadoop出现了问题之后并且重新配置时,请保证将这两个文件夹彻底删掉

格式化

cd /usr/local/hadoop/bin

hdfs namenode -format

格式化文件系统  “INFO util.ExitUtil: Exiting with status 0”成功

启动/验证/访问/停止

1、启动

cd /usr/local/hadoop/bin

start-all.sh  #启动hadoop

2、验证

jps  #查看java进程,如果有如下6个就ok

2536 DataNode

2408 NameNode

3034 NodeManager

2907 ResourceManager

3339 Jps

2748 SecondaryNameNode

注:如果是集群部署,只有4个,另外两个NodeManager、DataNode在slaves机器上

3、访问

http://192.168.190.130:50070

如果也想在外部(windows)使用centos1名称,需要修改hosts文件,增加映射配置:

C:\Windows\System32\drivers\etc\hosts 增加:192.168.190.130 centos1

 

http://192.168.190.130:8088/cluster

4、停止

stop-all.sh

测试免密登录

ssh centos2

hdfs文件系统访问

http://192.168.190.130:50070/explorer.html#/

 

如果需要主机名访问,需要在C:\Windows\System32\drivers\etc\hosts中进行主机名映射。

大坑

1、secondarynamenode不启动

hadoop换版本后一定要删掉:/home/root/hadoop_tmp这个目录,

别跟/root/hadoop_tmp这个目录弄混了

 

另外日志文件是这个:

/usr/local/hadoop/logs/hadoop-root-secondarynamenode-centos1.log

不是这个:/usr/local/hadoop/logs/hadoop-root-secondarynamenode-centos1.out

2、hdfs-site.xml配置

dfs.namenode.datanode.registration.ip-hostname-check为false hadoop2.7.7版本要配置这个,要不上传文件是提示:“Datanode denied communication with namenode because hostname cannot be resolved (ip=192.168.190.138, hostname=192.168.190.138)” tm的读ipv6去了,实际应该是ipv4的ip。

hadoop常用操作

hadoop fs 和 hdfs dfs 是相同的

 

目录操作

hadoop dfsadmin -safemode leave  #退出安全模式

hadoop fs -mkdir -p /test/test1  #级联创建目录

hadoop fs -ls /  #查看根目录

hadoop fs -ls  #查看/user/root/

hadoop fs -rm -r -f /test  #级联删除目录

文件操作

hadoop fs -put /usr/local/hadoop/output/part-r-00000 /test/  #上传本地文件到hdfs的/test目录

hadoop fs -put /usr/local/hadoop/output/part-r-00000 hdfs://centos1:9000/test  #或是这样写

hadoop fs -rm /test/part-r-00000  #删除文件

hadoop fs -get /test/part-r-00000  #下载hdfs上的文件到当前目录

 

posted on 2020-04-13 06:34  英杰926  阅读(228)  评论(0编辑  收藏  举报