赞
踩
这个版本真的关键
hadoop:2.10.0
如果配置分布式spark还需要
vi /etc/hostname
添加到下图
修改 vi /etc/hosts,三台机器都需要
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.208.129 该机器/etc/hostname的值 master
192.168.208.130 该机器/etc/hostname的值 slave1
192.168.208.131 该机器/etc/hostname的值 slave2
然后每个主机都创建一个用户hadoop,然后将目录的权限给这个用户:,切换到这个用户。创建用户的过程在虚拟机安装的时候就可以设置了(如果是vmware的话),跟着步骤走就好,实在不想搞直接用root也行。后面所有东西都往bigdata装。
useradd hadoop
passwd hadoop
su hadoop
chown hadoop -R /bigdata
接下来所有新建文件夹等操作都在hadoop用户组下进行
配置免密登陆(三台都要)
hadoop用户组
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
子机器就换成@master,分配给另外两台机器
ssh-copy-id hadoop@slave1
ssh-copy-id hadoop@slave2
1.core-site
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/XXX</value> </property> <!-- 可选 --> <property> <name>dfs.data.dir</name> <value>/bigdata/data/datanode</value> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hue.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hue.groups</name> <value>*</value> </property> </configuration>
2.hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> <dedication> Datanode 有一个同时处理文件的上限,至少要有4096</dedication> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <!--设置为true,可以在浏览器中IP+port查看--> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
3.mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <!--配置实际的主机名和端口--> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
4.yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!--日志保存时间 默认保存3-7--> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property> <property> <!--ResourceManager 对客户端暴露的地址--> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <!--ResourceManager 对ApplicationMaster暴露的地址--> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <!--ResourceManager 对NodeManager暴露的地址--> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <!--ResourceManager 对管理员暴露的地址--> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <!--ResourceManager 对外web暴露的地址,可在浏览器查看--> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
修改yarn-env.sh和hadoop-env.sh
#将这句话放到带有java_home的位置,主要是有时候它就是不认你配置的java_home环境变量
export JAVA_HOME=/opt/jdk1.8.0_102
修改slaves文件
#删掉localhost不删掉的话datanode在master节点也会有
slave1
slave2
接下来我都是修改/etc/profile, 这两个文件差别就是一个修改系统,一个修改用户,正常应该是hadoop用户组,像参考博主用的是fay用户组,修改~/.bashrc 这样更规范
将hadoop添加到环境变量,修改~/.bashrc
export JAVA_HOME=/home/java/jdk/jdk1.8.0_221
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export HADOOP_HOME=/bigdata/binfile/hadoop-2.10.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后 source ~/.bashrc
另外两台机器就简单了,直接copy过去就好
scp -r /opt fay@slave1:/
scp -r /opt fay@slave2:/
理论上这一步没问题,但是你之前/opt权限没配置好就权限不足,那就弄好权限。
然后把环境变量文件也直接copy过去
scp ~/.bashrc hadoop@slave1:/home/fay/
scp ~/.bashrc hadoop@slave2:/home/fay/
两台机器上分别 source ~/.bashrc
然后在master节点上 初始化namenode:
hdfs namenode -format
然后启动hadoop
start-dfs.sh
start-yarn.sh
master节点上输入jps,看到如下显示:
[fay@master hadoop-2.8.5]$ jps
35184 SecondaryNameNode
34962 NameNode
35371 ResourceManager
35707 Jps
两个slave节点:
[fay@slave1 ~]$ jps
16289 Jps
16035 DataNode
16152 NodeManager
接下来按照参考链接2就可以完成了,遇到的问题如下
建议参考链接 docker安装mysql
此时只支持docker18.06
yum install -y yum-utils device-mapper-persistent-data lvm2
1.1.添加源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.2.查看包:
yum list docker-ce.x86_64 --showduplicates | sort -r
1.3.安装docker
yum -y install docker-ce-18.06.0.ce-3.el7
docker pull mysql:latest
docker run \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /home/data/mysql/mysql-files:/var/lib/mysql-files:rw \
-v /home/data/mysql/data:/var/lib/mysql:rw \
-v /home/data/mysql/log:/var/log/mysql:rw \
-v /home/data/mysql/config/my.cnf:/etc/mysql/my.cnf:rw \
-v /etc/localtime:/etc/localtime:ro \
--name mysql8 \
--restart=always \
-d mysql
提前要在提定的位置(我的位置是:/home/data)创建以下文件夹或文件:
/home/data/mysql/mysql-files:/var/lib/mysql-files:rw 挂载外部目录 就要挂载该目录
mysql/data 是数据库文件存放的地方。必须要挂载到容器外,否则容器重启一切数据消失。
mysql/log 是数据库主生的log。建议挂载到容器外。
mysql/config/my.cnf 是数据库的配置文件,在下面会放出来。
/etc/localtime:/etc/localtime:ro 是让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
docker exec -it mysql8 /bin/sh
配置远程连接
mysql
或
mysql -uroot -p(第一次进去是mysql,没用密码)
授权:
mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新权限:
mysql> flush privileges;
更新加密规则:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新root用户密码:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限:
mysql> flush privileges;
hive启动失败
1:namenode未开启
重新启动hadoop
hdfs namenode -format 初始化
2.hive-site.xml未生效
查看路径是否正确
3.初始化数据库失败
schematool -dbType mysql -initSchema
查看mysql连接的jar包是否存在
下载地址
jar包下载地址
spark安装部署参考文档
spark连接前需要开启hive服务
hiveserver2 --service start&
spark-env.sh
# - OPENBLAS_NUM_THREADS=1 Disable multi-threading of OpenBLAS
export JAVA_HOME=/bigdata/software/jdk1.8.0_221
export SPARK_WORKER_MEMORY=4096m
export SPARK_WORKER_CORES=3
# 端口要和spark-defaults.conf中的spark.master一致
export SPARK_MASTER_PORT=7177
export SPARK_MASTER_IP=xx.xx.xx.xx
export SPARK_LOCAL_IP=xx.xx.xx.xx
spark-defaults.conf(可选)
cp ${SPARK_HOME}/conf/spark-defaults.conf.template ${SPARK_HOME}/conf/spark-defaults.conf vi ${SPARK_HOME}/conf/spark-defaults.conf # Example: spark.master spark://master:7177 spark.local.dir /app/binfile/spark-2.4.5-bin-hadoop2.7/sparktmp spark.debug.maxToStringFields 100 spark.driver.memory 6g # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" mapreduce.map.memory.mb 2g mapreduce.reduce.memory.mb 4g spark.executor.cores 1 spark.executor.memory 4g spark.dynamicAllocation.enabled false spark.dynamicAllocation.initialExecutors 1 spark.dynamicAllocation.maxExecutors 2 spark.sql.crossJoin.enabled true
4 [yun@mini01 conf]$ tail spark-env.sh # 修改环境变量配置 5 # Options for native BLAS, like Intel MKL, OpenBLAS, and so on. 6 # You might get better performance to enable these options if using native BLAS (see SPARK-21305). 7 # - MKL_NUM_THREADS=1 Disable multi-threading of Intel MKL 8 # - OPENBLAS_NUM_THREADS=1 Disable multi-threading of OpenBLAS 9 10 # 添加配置如下 11 # 配置JAVA_HOME 12 export JAVA_HOME=/app/jdk 13 # 设置Master的主机名 14 export SPARK_MASTER_IP=mini01 15 # 每一个Worker最多可以使用的内存,我的虚拟机就2g 16 # 真实服务器如果有128G,你可以设置为100G 17 # 所以这里设置为1024m或1g 18 export SPARK_WORKER_MEMORY=1024m 19 # 每一个Worker最多可以使用的cpu core的个数,我虚拟机就一个... 20 # 真实服务器如果有32个,你可以设置为32个 21 export SPARK_WORKER_CORES=1 22 # 提交Application的端口,默认就是这个,万一要改呢,改这里 23 export SPARK_MASTER_PORT=7077 24 25 [yun@mini01 conf]$ pwd 26 /app/spark/conf 27 [yun@mini01 conf]$ cp -a slaves.template slaves 28 [yun@mini01 conf]$ tail slaves # 修改slaves 配置 29 # distributed under the License is distributed on an "AS IS" BASIS, 30 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 31 # See the License for the specific language governing permissions and 32 # limitations under the License. 33 # 34 35 # A Spark Worker will be started on each of the machines listed below.
vi slaves
# A Spark Worker will be started on each of the machines listed below.
master
slave1
slave2
slave3
连接hive
参考我自己的博客哈哈
hive+spark-shell
博主公众号
求关注
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。