Centos7安装hadoop集群步骤

hadoop集群安装步骤

!ssh远程执行命令时的一个小知识点

ssh 远程登录可以为所欲为,但是ssh远程执行的时候默认不会加载/etc下的文件如

ssh [email protected] echo $JAVA_HOME

是打印不出来的,应该换写成下面的形式

ssh [email protected] source /etc/profile ; echo $JAVA_HOME

准备虚拟机环境

#如果没有vim可选择安装vim
yum -y install vim
#关闭防火墙
service iptables stop
#开启自动关闭防火墙
chkconfig  iptables off
#centos7关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

#配置Selinux为disabled
vim /etc/selinux/config
SELINUX=disabled
#安装ntp服务
yum -y install ntp
#配置ntp服务
vim /etc/ntp.conf
server ntp1.aliyun.com
#开启ntp服务[准不准不重要,集群时间一致就行]
service ntpd start
systemctl start ntpd.service
#开机自动启动ntpd服务
chkconfig ntpd on 
systemctl enable ntpd.service

修改hosts文件[按需填写]

vim /etc/hosts
10.0.92.101 work1
10.0.92.102 work2
10.0.92.103 work3
10.0.92.104 work4

vim /etc/hosts
192.168.0.114 home1
192.168.0.115 home2
192.168.0.116 home3
192.168.0.117 home4

创建目录

mkdir -p /opt/zip
mkdir -p /opt/soft
mkdir -p /opt/data/tmp
cd /opt/zip

上传jdk hadoop 到/opt/zip中

安装

tar -xzvf jdk-1.8.tar.gz -C /opt/soft
tar -xzvf hadoop-2.7.7.tar.gz -C /opt/soft/
cd /opt/soft/
mv jdk1.8.0_201 jdk1.8
mv hadoop-2.7.7 hadoop2.7

配置 vim /etc/profile 追加

export JAVA_HOME="/opt/soft/jdk1.8"
export HADOOP_HOME="/opt/soft/hadoop2.7"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

生效

source /etc/profile
#或者   .  /etc/profile
echo $JAVA_HOME
echo $HADOOP_HOME

配置hadoop

为了方便最好把这几个都配置一下

配置 Hadoop JDK 路径修改 hadoop-env.sh、mapred-env.sh、yarn-env.sh 文件中的 JDK 路径

vim hadoop-env.sh

vim mapred-env.sh

vim yarn-env.sh

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME="/opt/soft/jdk1.8"

为啥一定要改这个呢??还记得文章开头写的吗。ssh远程执行时这里面的${JAVA_HOME}是获取不好的,会出问题,所以换成绝对路径。

etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/soft/hadoop2.7/data/tmp</value>
    </property>
</configuration>

比hadoop官网多配置了一个hadoop.tmp.dir原因是

默认的hadoop.tmp.dir/tmp/hadoop-${user.name},此时有个问题就是 NameNode 会将 HDFS 的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空 /tmp 目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

etc/hadoop/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

配置免密

ssh localhost 检测一下是否已经配置过,同时会自动生成一个.ssh的文件夹,进入到.ssh文件夹中,准备生成密钥

说明:把自己的公钥给谁,自己就可以登录谁了。

生成公钥和私钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#或者  ssh-keygen -t rsa  + 3个回车
发送公钥给自己或者其他服务器

方式一 通过ssh-copy-id的方式【推荐】

ssh-copy-id -i ~/.ssh/id_rsa.pub <IP地址或者域名localhost>
#栗子
ssh-copy-id -i ~/.ssh/id_rsa.pub localhost
ssh-copy-id -i ~/.ssh/id_rsa.pub work1
ssh-copy-id -i ~/.ssh/id_rsa.pub work2
ssh-copy-id -i ~/.ssh/id_rsa.pub work3
ssh-copy-id -i ~/.ssh/id_rsa.pub work4

如上配置完 work1就能登录 work2,work3,work4

方式二 通过scp将内容写到对方的文件中

scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/temp.pub
#然后再登录另一个服务器 [把名字改伟temp.pub的原因是防止和另一台上的id_rsa.pub冲突]
cat ~/.ssh/temp.pub >> ~/.ssh/authorized_keys
rm -f ~/.ssh/temp.pub

方式三 手工复制粘贴的方式

把id_rsa.pub追加到其他服务器的~/.ssh/authorized_keys里面

格式化于启动

#格式化
hdfs namenode -format
#启动
sbin/start-dfs.sh
#检查
jps
#打开网页访问
http://work1:50070
#创建目录
hdfs dfs -mkdir -p /user/root/test
#上传文件
hdfs dfs -put ngindx.tar.gz /user/root/test
#下载文件
hdfs dfs -get /user/root/test/nginx.tar.gz

配置yarn

cd ${HADOOP_HOME}/etc/hadoop/
cp mapred-site.xml.template  mapred-site.xml

vim mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

vim yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>work1</value>
    </property>
</configuration>

启动yarn资源管理器,和nodeManager

yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager

计算一个wordcount

echo "hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark hadoop" >wc.input
hdfs dfs -mkdir /demo
hdfs dfs -put wc.input /demo
hdfs dfs -cat /demo/wc.input
cd /opt/soft/hadoop2.7/share/hadoop/mapreduce
yarn jar hadoop-mapreduce-examples-2.7.7.jar wordcount /demo /out
#计算完成后查看结果
hdfs dfs -cat /out/part-r-00000
cd /opt/soft/hadoop2.7.7/sbin
#停止运行
stop-dfs.sh

总结安装好后,启动并运行一个wordcount

start-dfs.sh
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
hdfs dfs -ls /
echo "hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark hadoop" >wc.input
hdfs dfs -mkdir /test
hdfs dfs -put wc.input /test
cd /opt/soft/hadoop2.7/share/hadoop/mapreduce/
yarn jar hadoop-mapreduce-examples-2.7.7.jar wordcount /test /out
原创文章 19 获赞 2 访问量 4887

猜你喜欢

转载自blog.csdn.net/qq_34173920/article/details/105533048