Linux环境搭建

退出图形可视化界面:

systemctl set-default multiuser.target

 

删除命令:rm -rf nm-local-dir  这个是该目录下,其它目录用/

查看目录:pwd

重启:reboot

 

以管理员身份进入:su

 

根据比赛具体要求连接主机:

ssh root@39.106.156.38(公共IP)

 

Linux下的vi编辑

 

 

修改主机名

hostnamectl set-hostname master

bash

 

hostnamectl set-hostname slave1

bash

 

hostnamectl set-hostname slave2

bash

 

编写network文件(就master使用):

vim /etc/sysconfig/network

 

NETWORKING=yes

HOSTNAME=master

 

esc退出:wq保存

 

下载工具(-y表示同意):三台都做

yum install -y net-tools(下载速度慢)

 

bash:刷新

 

设置host地址:

vim /etc/hosts

根据比赛具体要求按大写G跳到最后一行在按o输入

192.168.109.155 master

192.168.109.156 slave1

192.168.109.157 slave2

 

更改:三台机子的IP地址

 

 

分发文件

scp /etc/hosts root@slave1:/etc/

scp /etc/hosts root@slave2:/etc/

 

返回查看slave1、slave2是否连接成功

vim /etc/hosts

 

三台机子同时进行!

关闭防火墙:

systemctl stop firewalld

 

关闭完查看:

systemctl status firewalld

 

显示dead则表示关闭成功

 

永久关闭防火墙

systemctl disable firewalld

 

三台都做

11,修改时间(选到北京):

tzselect

5:asia

9:china

 

vim /etc/profile

 

根据比赛具体要求:

按大写G跳到最后一行在按o输入

TZ='Asia/Shanghai'; export TZ(tzselect 最后提示)

 

保存退出:

source /etc/profile

 

 

 

查看是否更改正确:date

 

下载ntp:

yum install -y ntp

 

【关闭master发送键输入到所有会话(在master页面按off)】

编辑ntp.conf:(只用在master下)

vi /etc/ntp.conf

Server 127.127.1.0

Fudge 127.127.1.0

:wq保存退出

 

 

(在server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

在这四句开头s前加上#将其注释掉

并在这四句下输入:按o在下一行输入

Server 127.127.1.0

Fudge 127.127.1.0 stratum 10

stratum 10 设置服务器总层级,这里是10,根据题意修改)

 

master分发文件

scp -r /etc/ntp.conf root@slave1:/etc/

scp -r /etc/ntp.conf root@slave2:/etc/

 

启动ntp

/bin/systemctl restart ntpd.service

 

 

启动ntp

systemctl restart ntpd(重启ntpd)(只用在master下)

同步时间外网(slave1,2大约5分钟):

ntpdate master

失败:

sysytemctl status ntpd

systemctl stop ntpd

 

 

(显示masterIP)

 

查看时间:date

 

设置定时任务,master节点不操作,

在slave中操作,slave1和slave2中开启点击发送键输入到所有会话

 

crontab -e

 

(e为编辑模式,l查看)

whereis ntpdate就会得到绝对路径

 

写入:根据比赛规则来改变

*/30 10-17 * * * /usr/sbin/ntpdate master

 

时间同步更改规则:*/开头必写,30为分钟(每半小时),空格再写第二个参数小时,

10点到17点,后三个参数为日 月 周,没有要求就用*表示

usr/sbin/ntpdata master}绝对路径在master下输入

whereis ntpdate就会得到绝对路径

 

ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz 

 

/usr/sbin/ntpdate这一段就为我们想要的“绝对路径”再加个空格master就行

 

免密:

 

15,

设蛋免密在。55h目录下:

1)三台机子(root目录)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

(2) master端,先进入•ssh目录下:

cd .ssh

cat id_dsa.pub >> authorized_keys

回是自己:

ssh master

在退出:

exit

(3) slave1、2,先进入ssh目录下:

cd .ssh

scp master:~/.ssh/id_dsa.pub ./master_das.pub

cat master_das.pub >> authorized_keys回显自己:

ssh slavel1/2

退出:

exit

 

 

 

master下:

ssh-keygen

 

ssh-copy-id master

 

ssh-copy-id slave1

 

ssh-copy-id slave2

 

ssh slave2

 

exit

 

ls8

 

在.ssh目录下:

cat known_hosts(查看可以访问的信息)

ssh localhost

 

exit

 

 

 

cd 退出该目录

cd /opt/进入到opt文件夹下

mkdir soft 创建soft文件夹

在opt文件夹下soft,并将软件压缩包拖进去

 

JDK---------------------------------------------------------------

mkdir -p /usr/java

 

cd /usr/java/

cd /opt/soft/java/

 

解压:

tar -zxvf /usr/java/jdk-8u221-linux-x64.tar.gz -C/usr/java/

tar -zxvf /opt/soft/jdk-8u221-linux-x64.tar.gz -C/opt/soft/

 

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

【打开三台机器的发送键输入到所有会话】

 

配置环境变量(此环境为三个工具的环境):

vim /etc/profile 

 

底部:

#java

export JAVA_HOME=/usr/java/jdk1.8.0_221     

export CLASSPATH=$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin/

 

环境资源生效:

source /etc/profile

 

【关闭master发送键输入到所有会话】

 

发送java:

scp -r /usr/java slave1:/usr/

scp -r /opt/soft/ slave1:/opt/soft/

 

scp -r /usr/java slave2:/usr/

scp -r /opt/soft/ slave2:/opt/soft/

 

 

在slave1,slave2环境资源生效:

source /etc/profile

 

检测java:

java -version

 

(出现Open JDK则成功)

 

 

zookeeper----------------------------------------------------------------

安装zookeeper:

创建目录:

mkdir /usr/zookeeper

 

cd /usr/zookeeper

 

解压:

tar -zxvf /usr/zookeeper/zookeeper-3.4.14.tar.gz -C/usr/zookeeper/

tar -zxvf /opt/soft/zookeeper-3.4.14.tar.gz -C/opt/soft/

 

 

进入目录:

cd /opt/soft/zookeeper-3.4.14/conf

 

【打开三台机器的发送键输入到所有会话】

 

{   [ls

查看 复制路径

cd 路径

pwd 复制

]

配置环境变量(此环境为三个工具的环境):

vim /etc/profile

 

#zookeeper

export ZOOKEEPER_HOME=/home/master/usr/zookeeper/zookeeper-3.4.14

export PATH=$PATH:$ZOOKEEPER_HOME/bin

 

source /etc/profile

 

到conf目录

cd conf/

 

ls      }

 

 

 

cp zoo_sample.cfg zoo.cfg

 

编辑zoo.cfg:

vim zoo.cfg

 

复制题目内容

修改???--》内容:(存储路径)

1、dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata

dataDir=/opt/soft/zookeeper/zookeeper-3.4.14/zkdata

 

2、配置日志文件路径

dataLogDir=/home/master/usr/zookeeper/zookeeper-3.4.14/zkdatalog

dataLogDir=/home/master/opt/soft/zookeeper/zookeeper-3.4.14/zkdatalog

 

 

3、

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

(集群内容(固定内容))

 

 

退回上一级目录:

cd ..(有空格!!!)

 

创建zkdata,zkdatalog:

mkdir zkdata zkdatalog

 

进入zkdata

cd zkdata

编辑myid为1

vi myid

 

发送zookeeper:

scp -r /usr/zookeeper slave1:/usr/

scp -r /opt/soft/ slave1:/opt/soft/

 

 

scp -r /usr/zookeeper slave2:/usr/

scp -r /opt/soft/ slave2:/opt/soft/

 

 

echo 1 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid

 

(echo表示覆盖)

 

在slave1中写入

cd /usr/zookeeper/zookeeper-3.4.14/zkdata

修改id

vi myid

2

 

echo 2 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid

 

在slave2中写入

cd /usr/zookeeper/zookeeper-3.4.14/zkdata

修改id

vi myid

3

 

 

echo 3 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid

 

三个一起:

查看是否成功

cat /usr/zookeeper/zookeeper-3.4.14/zkdata/myid

cat /opt/soft/zookeeper-3.4.14/zkdata/myid

 

 

 

启动zookeeper:/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh start

 

 

查看状态:/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh status

Master和slave2出现follower,salve1出现leader则说明配置成功

 

 

 

jps查看

 

错误:

jps查看进程

不占用端口就查看zoo.cfg

然后/zkdata/myid的/zkdata下删除除了myid外的文件

再次启动

 

hadoop----------------------------------------------------------------

【关闭masterOFF】

创建hadoop文件:

mkdir /usr/hadoop

 

cd /usr/hadoop

 

解压:

tar -zxvf /usr/hadoop/hadoop-2.7.7.tar.gz -C/usr/hadoop/

tar -zxvf  /opt/soft/hadoop-2.7.7.tar.gz -C/usr/hadoop/

 

 

进入目录:

cd hadoop-2.7.7/

cd /usr/hadoop/hadoop-2.7.7/etc/hadoop

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

 

三个都要

vim /etc/profile

 

#hadoop

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7        

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

 

source /etc/profile

 

配置hadoop的JAVA_HOME的环境变量

cat /etc/profile

 

(复制Java的第一条语句)export JAVA_HOME=/usr/java/jdk1.8.0_221

记得修改路径!

 

cd /usr/hadoop/hadoop-2.7.7/etc/hadoop

 

一、配置

vi hadoop-env.sh

写入:export  JAVA_HOME=/usr/java/jdk1.8.0_221

 

  • 配置

vi core-site.xml

 

<property>

<name>fs.default.name</name>

 <value>hdfs://master:9000</value>

</property>

<property>

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

 <value>/usr/src/hadoop-2.7.3/hdfs/tmp</value>

<description>A base of other temporary directories</description>

</property>

<property>

<name>io.file.buffer.size</name>

 <value>131072</value>

</property>

<property>

<name>fs.checkpoint.period</name>

 <value>60</value>

</property>

<property>

<name>fs.checkpoint.size</name>

 <value>67108864</value>

</property>

 

三:配置

vi yarn-site.xml

写入:

<property>

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

 <value>mapreduce_shuffle</value>

</property>

<property>

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

 <value>master:18040</value>

</property>

<property>

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

 <value>master:18030</value>

</property>

<property>

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

 <value>master:18025</value>

</property>

<property>

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

 <value>master:18141</value>

</property>

<property>

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

 <value>master:18088</value>

</property>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

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

</property>

 

四、配置

vim hdfs-site.xml

写入:

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

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

<value>/root/hadoopData/name</value>

</property>

<property>

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

<value>/root/hadoopData/data</value>

</property>

<property>

<name>dfs.datanode.use.datanode.hostname</name>

<value>true</value>

</property>

<property>

<name>dfs.pemissions</name>

<value>false</value>

</property>

 

五、配置

vim mapred-site.xml

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

 

六、修改slaves

vi slaves

写入:

slave1

slave2

编辑mater:

vi master

写入:

master

分发hadoop:

scp -r /usr/hadoop/ root@slave1:/usr/

scp -r /usr/hadoop/ root@slave2:/usr/

 

格式化出现0才算成功:

hadoop namenode  -format

 

 

 

 

一:

vim hadoop-env.sh

 

写入:

export java_home 下面

export JAVA_HOME=/usr/java/jdk1.8.0_221   

 

二:

配置:

vim core-site.xml

 

写入:

<property>

        <name>fs.default.name</name>

        <value>hdfs://master:9000</value>

</property>

<property>

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

        <value>/root/hadoopData/tmp</value>

</property>

 

三:

vim hdfs-site.xml

 

写入:

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

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

<value>/root/hadoopData/name</value>

</property>

<property>

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

<value>/root/hadoopData/data</value>

</property>

<property>

<name>dfs.datanode.use.datanode.hostname</name>

<value>true</value>

</property>

<property>

<name>dfs.pemissions</name>

<value>false</value>

</property>

 

三个都要

vim /etc/profile

 

#hadoop

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7        

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

 

source /etc/profile

 

配置hadoop的JAVA_HOME的环境变量

cat /etc/profile

 

(复制Java的第一条语句)export JAVA_HOME=/usr/java/jdk1.8.0_221

 

cd /usr/hadoop/hadoop-2.7.7/etc/hadoop

 

一:

vim hadoop-env.sh

 

写入:

export java_home 下面

export JAVA_HOME=/usr/java/jdk1.8.0_221   

 

 

{第二个value为题目所给绝对地址}

 

hive------------------------------------------------

在master端:

创建文件:

mkdir -p /usr/hive

 

解压:

tar -zxvf /usr/apache-hive-2.3.4-bin.tar.gz -C/usr/hive/

 

cd /usr/hive

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

进入对应目录

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

 

(配置slave1,master)

vim /etc/profile

 

#hive

export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin   

export PATH=$PATH:$HIVE_HOME/bin

 

source /etc/profile

 

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

vim hive-env.sh.

 

复制入

# HADOOP_HOME=${bin}/../../hadoop 

HADOOP_HOME=/usr/hadoop/hadoop-2.7.7

 

# export HIVE_CONF_DIR=

export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf

 

# export HIVE_AUX_JARS_PATH=

export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib

 

(1,安装路径2,配置文件存放路径为conf3运行路径为lib)

(再打开一个终端

查看/conf下的路径

pwd

cd ..

ls

cd lib/

pwd

复制路径为运行路径)

 

解决版本冲突

解决安装包冲突:

cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/(题目中的地址 空格$连接)

 

在slave1中:

cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/

 

cp /usr/package277/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib

 

 

 

slave1 中:

cd $HIVE_HOME

 

cd conf/

 

ls

vi hive-site.xml

 

写入:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!--hive产生的元数据存放位置-->

  <property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive_remote/warehouse</value>

</property>

<!--数据库连接JDBC的URL地址-->

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>

</property>

<!--数据库连接driver,即mysql驱动-->

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<!--mysql数据库用户名-->

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<!--mysql数据库密码-->

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>root</value>

</property>

</configuration>

 

 

(1,存放路径2结点为slave2,3相当于com/mysql/jdbc/Driver)

 

master中:

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

vi hive-site.xml

 

写入:

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!--hive产生的元数据存放位置-->

  <property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive/warehouse</value>

</property>

<!--使用本地服务连接hive,默认为true-->

<property>

<name>hive.metastore.local</name>

<value>false</value>

</property>

<!--连接服务器-->

<property>

<name>hive.metastore.uris</name>

<value>thrift://slave1:9083</value>

</property>

</configuration>

 

(1路径2关闭false3slave1结点)

 

在slave1中初始化数据库:

schematool -dbType mysql -initSchema

 

在slave1启动hive服务:

hive --service metastore &

 

(service放在后端运行)

在master服务端进入hive:

hive

 

create database hive;

 

show databases;

 

quit;

 

 

(参数都是题目所给

1,NameNode的地址(备份数量为2)2,NameNode存储空间的路径3,Datanode的存放路径4集群权限系统校验5Datanode之间通信(true允许)

 

cat /etc/profile

 

(复制Java的第一条语句)

vim yarn-env.sh

 

写在:

User for YARN 下

 

四:

设置YARN的核心参数

vim yarn-site.xml

 

<property>

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

<value>mapreduce_shuffle</value>

</property>

<property>

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

<value>master:18141;</value>

</property>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

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

</property>

 

(master:18141 :master端口,mapreduce_shuffle为使用的方式)

 

五:

计算框架参数

CM默认没有需要复制

cp mapred-site.xml.template mapred-site.xml

 

vim mapred-site.xml

 

写入:

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

(在yarn上使用)

 

 

echo slave1 >slaves

 

echo slave2 >>slaves

 

检测

 

cat slaves

 

echo master >master

 

发送Hadoop:

scp -r /usr/hadoop root@slave1:/usr/

 

scp -r /usr/hadoop root@slave2:/usr/

 

格式化出现0才算成功:

hadoop namenode -format

 

启动和关闭能访问master:50070:

start-all.sh

 

(报错就 /usr/hadoop/hadoop-2.7.7/sbin/start-all.sh)

检查状态:

jps

 

 

安装MySQL源:slave2做,[此时共享都关闭]-----------------------------------------

(关闭开机自启)

systemctl disable mysqld

 

启动MySQL:

systemctl start mysqld

 

grep "temporary password" /var/log/mysqld.log

 

默认密码:

 

进入mysql,

mysql -u root -p

 

更改为弱密码(0为最低级):

set global validate_password_policy=0;

 

密码最小长度限制改为1:

set global validate_password_length=1;

 

修改密码为root:

alter user 'root'@'localhost' identified by '123456';

 

退出命令:

\q;

 

开启 mysql 中 root用户远程访问权限:

先进入mysql

mysql -uroot -p123456

 

创建一个可以远程连接的root用户密码为root

create user 'root'@'%' identified by 'root';

 

设置权限

所有用户都能登录:

grant all privileges on *.* to 'root'@'%' with grant option;

 

刷新:

flush privileges;

 

hive------------------------------------------------

在master端:

创建文件:

mkdir -p /usr/hive

 

解压:

tar -zxvf /usr/package277/apache-hive-2.3.4-bin.tar.gz -C/usr/hive/

 

cd /usr/hive

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

进入对应目录

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

 

(配置slave1,master)

vim /etc/profile

 

#hive

export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin   

export PATH=$PATH:$HIVE_HOME/bin

 

source /etc/profile

 

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

vim hive-env.sh.

 

复制入

# HADOOP_HOME=${bin}/../../hadoop 

HADOOP_HOME=/usr/hadoop/hadoop-2.7.7

 

# export HIVE_CONF_DIR=

export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf

 

# export HIVE_AUX_JARS_PATH=

export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib

 

(1,安装路径2,配置文件存放路径为conf3运行路径为lib)

(再打开一个终端

查看/conf下的路径

pwd

cd ..

ls

cd lib/

pwd

复制路径为运行路径)

 

解决版本冲突

解决安装包冲突:

cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/(题目中的地址 空格$连接)

 

在slave1中:

cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/

 

cp /usr/package277/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib

 

 

 

slave1 中:

cd $HIVE_HOME

 

cd conf/

 

ls

vi hive-site.xml

 

写入:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!--hive产生的元数据存放位置-->

  <property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive_remote/warehouse</value>

</property>

<!--数据库连接JDBC的URL地址-->

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>

</property>

<!--数据库连接driver,即mysql驱动-->

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<!--mysql数据库用户名-->

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<!--mysql数据库密码-->

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>root</value>

</property>

</configuration>

 

 

(1,存放路径2结点为slave2,3相当于com/mysql/jdbc/Driver)

 

master中:

cd /usr/hive/apache-hive-2.3.4-bin/conf

 

vi hive-site.xml

 

写入:

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!--hive产生的元数据存放位置-->

  <property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive/warehouse</value>

</property>

<!--使用本地服务连接hive,默认为true-->

<property>

<name>hive.metastore.local</name>

<value>false</value>

</property>

<!--连接服务器-->

<property>

<name>hive.metastore.uris</name>

<value>thrift://slave1:9083</value>

</property>

</configuration>

 

(1路径2关闭false3slave1结点)

 

在slave1中初始化数据库:

schematool -dbType mysql -initSchema

 

在slave1启动hive服务:

hive --service metastore &

 

(service放在后端运行)

在master服务端进入hive:

hive

 

create database hive;

 

show databases;

 

quit;

 

 

 

 

 

spark---------------------------------------------------

关闭共享

关掉hadoop安装:

/usr/hadoop/hadoop-2.7.7/sbin/stop-all.sh

 

创建:

mkdir /usr/scala/

 

cd /usr/scala/

 

tar -zxvf /usr/package277/scala-2.10.6.tgz -C/usr/scala/

 

cd scala-2.10.6/

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

 

vim /etc/profile

 

 

#scala

export SCALA_HOME=/home/master/usr/scala/scala-2.11.12   

export CLASSPATH=$SCALA_HOME/lib

export PATH=$PATH:$SCALA_HOME/bin

 

source /etc/profile

 

检查:

scala -version

 

scp -r /usr/scala root@slave1:/usr/

 

scp -r /usr/scala root@slave2:/usr/

 

 

 

创建文件:

mkdir /usr/spark/

 

cd /usr/spark/

解压 :

tar -zxvf /usr/package277/spark-2.4.3-bin-hadoop2.7.tgz -C/usr/spark/

 

进入目录:

cd /usr/spark/spark-2.4.3-bin-hadoop2.7/conf/

 

复制出spark-env.sh:

cp spark-env.sh.template spark-env.sh

 

[ls

查看 复制路径

cd 路径

pwd 复制

]

 

vim etc/profile

 

#spark

export SPARK_HOME=/usr/spark/spark-2.4.0-bin-hadoop2.7

export PATH=$SPARK_HOME/bin

 

source /etc/profile

 

vim spark-env.sh

 

export SPARK_MASTER_IP=master

export JAVA_HOME=JAVA_HOME=/usr/java

export SPARK_WORKER_MEMORY=8g

export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.7/etc/hadoop

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7

export SCALA_HOME=/usr/scala/scala-2.10.6

 

vim slaves

 

写入:

删除localhost

slave1

slave2

 

发送spark

scp -r /usr/spark slave1:/usr/spark

 

scp -r /usr/spark slave2:/usr/spark

 

 

(启动zookeeper:

/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh start

 

根目录下启动hadoop

/usr/hadoop/hadoop-2.7.7/sbin/start-all.sh)

 

jps是查看进程jps

 

启动spark集群

/usr/spark/spark-2.4.3-bin-hadoop2.7/sbin/start-all.sh

 

 

访问页面:

192.168.187.128:8080

接下来我们开启我们的 spark-shell 以及 pyspark 进入到 spark 的交互模式:

首先 spark-shell 此时进入的是 python 环境下的 spark 交互模式

根目录下

spark-shell

简单测试一下输入:

print("Hello,world!")

退出:

:quit

 

 

 

 

连接slave3

ssh root@39.106.156.38

 

修改主机名

hostnamectl set-hostname slave3

 

(四个主机都改)

vim /etc/hosts

 

vim /etc/profile

(从master中复制需要的配置)

 

source /etc/profile

 

定时任务:

crontab -e

 

写入:

*/30 * * * * /usr/sbin/ntpdata master

 

salve3设置免密:

ssh-copy-id slave3

 

安装JDK到/usr/java下

scp -r /usr/java slave3:/usr/

 

HADOOP

scp -r /usr/hadoop slave3:/usr/

 

master端(hadoop文件下)

vim slaves

 

写入

slave3

 

在slave3端(启动datanode,nodemanager)

hadoop-daemon.sh start datanode

 

yarn-daemon.sh start nodemanager

 

master中刷新

hdfs dfsadmin -refreshNodes

 

master

vim hdfs-site.xml

 

写入:

<property>

<name>dfs.hosts.exclude</name>

<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value>

</property>

 

将slave3添加进excludes

echo slave3 > /usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes

 

刷新

hdfs dfsadmin -refreshNodes

 

slave3关闭Hadoop(master中)

hadoop-ddemon.sh stop datenode

 

yarn-daemon.sh stop nodemanager

 

 

 

 

 

连接Hadoop主机

ssh ??

 

下面任务栏MapReduce locations

配置参数

 

 

C:\Window\System32\divers\etc\hosts

39.106.143.10 hadoop000

 

cat /etc/hosts

 

导入eclipse-plugin-2.7.5.jar进eclipse

 

新建 MapReduce Driver

 

window -->preferences-->MapReduce(选择Hadoop路径)

 

window -->perspective -->other-->MapReduce

 

window -->show view-->other-->MapReduce locations

 

locationname:123(取消勾选)

Host:公共IP  Host:公共IP

Port:不改变  Port:9000

User:root

(报错不管)

 

虚拟机

jps

 

hadoop namenode -format

 

开启Hadoop集群

start-all.sh

 

jps

 

hdfs dfs -mkdir /test

 

 

创建成功

新建 -->project-->MapReduce project

 

 

步骤

一(得到评分矩阵)

map:获取每一行数据 用户ID做key movield +‘:’+rate做value

reduce:遍历结果集 拼接

二组合列表进行计数

 

三评分矩阵与对同矩阵互换

 

 

 

package com.hongya.peixun

import org.apache.hadoop.conf.Configuration;

public class ScoringMatrix{

    public static class ScoringMatrixMap extends Happer<LongWritable,Text,IntWritable,Text>{

        IntWritable k=new IntWritable();

        Text v=new Text();

        protected void nap(LongWritable key, Text value, Context context) throws IDException,InterruptedException{

           String line = value.toString();

           String[] split = line.split(",");

           Integer userID = Integer.volueOf(split[0]);//用Pid

           String moveId =split[1];//电影id

           Double reat = Double.value0f(split[2])://评分

           k.set(userID);

           v.set(moveId+"+"+reat);

           context.write(k,v);

        }

 

        public static class ScoringMatrixReduce extends Reducer<IntWritable,Text,IntWritable,Text>{

            Text v=new Text();

            protected void reduce(IntWritable key,Iterable<Text> values, Context context) throws IDException, InterruptedException{

                StringBuffer sb - new StringBuffer();

                for (Text value : values);

                    sb.append(","+value);

                }

                v.set(sb.toString().replaceFirst(",",""));

                context.write(key,v);

            }

        }

 

        public static void main(String[] args) throws IOException,ClassNotFoundException,InterruptedException{

            Configuration conf = new Configuration();

            conf.set("dfs.client.use.datanode.hostname","true");

            conf.set("fs.defaultFS" "hdfs://hadoopa00:9000");

            Job job = Job.getInstance(conf);

            BasicConfigurator.configure();//自动快速地使用缺省Logdj环境,

            job.setMapperCless(ScoringMatrixMap.class);

            job.setReducerClass(ScoringMatrixReduce.class);

            //设置map阶段的输出类型

            job.setMapOutputKeyClass(IntWritable.class);

            job.setMapOutputvalueClass(Text.class);

            //最终结果的数据类型

            job.setoutputKeyClass(IntWritable.class);

            job.setOutputValueClass(Text.class);

            //job.setNuaReduceTasks(1);

            //启动2个reduce任务

            //待处理数据的路色

            FileInputFormat.setInputPaths(job, new Path("/input/data.csv"));

            FileDutputFormat.set0utputPath(job, new Path("/root/movie/output1/"));

            boolean res = job.waitForCompletion(true);

            System.exit(res?0:1);

         }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值