我的大数据开发第1章:hadoop 单节点伪集群安装

我的大数据开发第1章:hadoop 单节点伪集群安装

在一个节点机器上部署一个hadoop集群,可用于开发环境,简单易行。os为centos7虚拟机(hostname=hacl-node1)。本章包括以下软件的开发(D)或运行环境(R)安装:

0 主机配置

vi /etc/hostname

hacl-node1

vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# add ipv4 and names

192.168.56.111    hacl-node1  zk1  zk2  zk3

vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=hacl-node1

必须能免密码 ssh 登录本机:

ssh localhost

如果提示输入密码,则需要:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys

如上操作后,如果 ssh localhost 提示: ssh_exchange_identification: read: Connection reset by peer

增加下面的行到:/etc/hosts.allow

sshd:127.0.0.1:allow

重启服务:service sshd restart

如上操作后,如果 ssh localhost 总是提示输入密码,即使输入正确的密码也报错,检查 /etc/ssh/sshd_config 文件,在最后面添加下句,然后 service sshd reload:

AllowUsers   root

创建程序目录(HADOOP_HOME=/usr/local/apache/hadoop-current):

mkdir -p /usr/local/{java,scala,apache}

创建hadoop数据目录(HADOOP_DATA_PREFIX=/hacl/hadoop):

mkdir -p /hacl/hadoop/{tmp,dfs/{nn,dn,jn},logs}

1 解压安装软件

 

# tar -zxf jdk-8u271-linux-x64.tar.gz -C /usr/local/java/

# tar -zxf scala-2.12.12.tgz -C /usr/local/scala/

# tar -zxf hadoop-3.3.0.tar.gz -C /usr/local/apache/

# tar -zxf apache-zookeeper-3.6.2-bin.tar.gz -C /usr/local/apache/

...

# cp amm-2.12-2.2.0 /usr/local/scala/

# cd /usr/local/java/ && ln -s jdk1.8.0_271 current

# cd /usr/local/scala/ && ln -s scala-2.12.12 current

# cd /usr/local/scala/ && ln -s amm-2.12-2.2.0 amm && chmox +x amm

# cd /usr/local/bin && ln -s /usr/local/scala/amm amm

# cd /usr/local/apache/ && ln -s hadoop-3.3.0 hadoop-current

# cd /usr/local/apache/ && ln -s apache-zookeeper-3.6.2-bin zookeeper-current

...

2 配置环境变量

/etc/profile.d/hacl-env.sh 完整内容如下:

###################################
# hadoop cluster env
# 2020-01-05
###################################
# java8
export JAVA_HOME=/usr/local/java/current
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

# scala
export SCALA_HOME=/usr/local/scala/current
export PATH=$PATH:$SCALA_HOME/bin

#######################
# apache.org softwares
#######################
export APACHE_ROOT=/usr/local/apache

# maven
export M2_HOME=$APACHE_ROOT/maven-current
export M2_CONF_DIR=$M2_HOME/conf
export PATH=$PATH:$M2_HOME/bin

# zookeeper
export ZK_HOME=$APACHE_ROOT/zookeeper-current
export ZK_CONF_DIR=$ZK_HOME/conf
export PATH=$PATH:$ZK_HOME/bin

# kafka
export KAFKA_HOME=$APACHE_ROOT/kafka-current
export KAFKA_CONF_DIR=$KAFKA_HOME/config
export PATH=$PATH:$KAFKA_HOME/bin

# hadoop
export HADOOP_HOME=$APACHE_ROOT/hadoop-current
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_DATA_PREFIX=/hacl/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=`hadoop classpath`

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

# hbase with phoneix
export HBASE_HOME=$APACHE_ROOT/hbase-current
export HBASE_CLI_HOME=$APACHE_ROOT/hbase-client-current
export PHOENIX_HOME=$APACHE_ROOT/phoenix-current
export HBASE_CONF_DIR=$HBASE_HOME/conf
export HBASE_CLI_CONF_DIR=$HBASE_CLI_HOME/conf
export PATH=$PATH:$HBASE_HOME/bin:$HBASE_CLI_HOME/bin:$PHOENIX_HOME/bin

# flink
export FLINK_HOME=$APACHE_ROOT/flink-current
export FLINK_CONF_DIR=$FLINK_HOME/conf
export PATH=$PATH:$FLINK_HOME/bin

使生效:

source /etc/profile.d/hacl-env.sh

3 hadoop单机集群配置

  • $HADOOP_CONF_DIR/hadoop-env.sh

修改日志目录如下:

export HADOOP_LOG_DIR=${HADOOP_DATA_PREFIX}/logs

  • $HADOOP_CONF_DIR/core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hacl/hadoop/tmp</value>
    </property>
  • $HADOOP_CONF_DIR/hdfs-site.xml
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/hacl/hadoop/dfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/hacl/hadoop/dfs/dn</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/hacl/hadoop/dfs/jn</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>

4 hadoop单机集群启动

第一次格式化namenode:

hdfs namenode -format

启动:

start-dfs.sh
jps
4101 NameNode
4266 DataNode
4475 SecondaryNameNode

浏览器查看:

http://hacl-node1:9870

如果看不到,把防火墙关掉再试:

systemctl stop firewalld.service

关闭:

stop-dfs.sh

5 运行YARN

用yarn运行mapreduce。配置如下:

  • $HADOOP_CONF_DIR/mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
  • $HADOOP_CONF_DIR/yarn-site.xml
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>

a.启动yarn,查看yarn(b.命令行和c.web),a.关闭yarn:

a. # start-yarn.sh

b. # yarn top

c. # http://hacl-node1:8088

d. # stop-yarn.sh

如何知道服务端口?

首先jps列出服务进程,例如:

[root@hacl-node1 hadoop]# jps
12274 NodeManager
12131 ResourceManager
14020 DataNode
14551 Jps
14217 SecondaryNameNode

查看进程SecondaryNameNode监听的端口:

[root@hacl-node1 hadoop]# ss -tnlp |grep 14217
LISTEN     0      128          *:9868                     *:*                   users:(("java",pid=14217,fd=297))

可见hadoop监听的是9868端口。使用浏览器查看:

http://hacl-node1:9868

6 flink on yarn 测试

  • 启动flink

不用作任何配置,直接运行下面的命令:

终端1:

# yarn-session.sh

...

JobManager Web Interface: http://hacl-node1:44818

终端2:

# jps
11206 FlinkYarnSessionCli
11567 YarnSessionClusterEntrypoint

# yarn top

                  APPLICATIONID USER             TYPE      QUEUE PRIOR   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
 application_1609828681311_0002 root       apache flink    default     0       1       0       1       0      2G      0G        556       1113 100.00   00:00:09 Flink session cluster

可见JobManager(YarnSessionClusterEntrypoint)和客户端FlinkYarnSessionCli都启动了。如果想中止yarn-session:

# yarn application -kill application_1609828681311_0002

关于flink的完整内容见第2章。

参考

http://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-common/SingleCluster.html

https://blog.csdn.net/weixin_45492007/article/details/106732448

https://www.cnblogs.com/happydreamzjl/p/12206997.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值