āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻžāĻ āĻ, āĻļā§āĻ āĻŦāĻŋāĻāĻžāĻ˛āĨ¤ āĻāĻ āĻāĻŽāĻ°āĻž Apache Spark āĻāĻŦāĻ āĻāĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻāĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻŦāĻŋāĻ āĻĄā§āĻāĻžāĻ° āĻāĻ§ā§āĻ¨āĻŋāĻ āĻŦāĻŋāĻļā§āĻŦā§, āĻ
ā§āĻ¯āĻžāĻĒāĻžāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻšāĻ˛ āĻŦā§āĻ¯āĻžāĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻā§āĻ¤ āĻŽāĻžāĻ¨āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§āĻ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻž āĻŽāĻžāĻāĻā§āĻ°ā§ āĻŦā§āĻ¯āĻžāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻ¯āĻŧ āĻāĻžāĻ āĻāĻ°ā§, āĻā§āĻ āĻ
āĻāĻļā§ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻŦāĻ āĻļāĻŋāĻĒāĻŋāĻ āĻāĻ°ā§ (āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ)āĨ¤ āĻāĻŦāĻ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻšā§āĻ¯āĻžāĻĄā§āĻĒ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻ
āĻāĻļ, āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ¯āĻŧāĻžāĻ°āĻ¨ (āĻŦāĻž āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ
ā§āĻ¯āĻžāĻĒāĻžāĻāĻŋ āĻŽā§āĻ¸ā§āĻ¸) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ 2020 āĻ¸āĻžāĻ˛ āĻ¨āĻžāĻāĻžāĻĻ, āĻļāĻžāĻ˛ā§āĻ¨ Hadoop āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻ
āĻāĻžāĻŦā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĻ° āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻāĻāĻžāĻ°ā§ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨āĻŦāĻŋāĻĻā§āĻ§ - HDP āĻāĻŦāĻ CDH āĻāĻ° āĻŦāĻŋāĻāĻžāĻļ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻā§āĻā§, CDH āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻāĻŦāĻ āĻāĻ° āĻāĻā§āĻ āĻāĻ°āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻŦāĻžāĻāĻŋ Hadoop āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§āĻ°āĻž āĻšāĻ¯āĻŧ āĻ
āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦ āĻŦāĻ¨ā§āĻ§ āĻŦāĻž āĻāĻāĻāĻŋ āĻŽā§āĻ˛āĻžāĻ¨ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ āĻāĻā§. āĻ
āĻ¤āĻāĻŦ, Kubernetes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Apache Spark āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻŦā§āĻšā§ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻā§āĻ°āĻš āĻŦāĻžāĻĄāĻŧāĻā§ - āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻāĻŦāĻ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ āĻā§āĻ˛āĻžāĻāĻĄā§ āĻāĻ¨āĻā§āĻāĻ¨āĻžāĻ° āĻ
āĻ°ā§āĻā§āĻ¸ā§āĻā§āĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻŽāĻžāĻ¨ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§, āĻāĻāĻŋ YARN-āĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻāĻžāĻ° āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻĒā§āĻ° āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻžāĻŖāĻŋāĻā§āĻ¯āĻŋāĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻŽā§āĻā§āĻ¤ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ
āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨āĻāĻžāĻŦā§ āĻŦāĻŋāĻāĻžāĻļāĻŽāĻžāĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§ˇ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻāĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻ
āĻ°ā§āĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻā§ āĻāĻŦāĻ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻĻāĻā§āĻˇāĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻ¸āĻ°āĻ˛āĻāĻ°āĻŖāĻā§ āĻ¸āĻšāĻ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 2.3.0 āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, Apache Spark āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ
āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻā§ āĻāĻŦāĻ āĻāĻ, āĻāĻŽāĻ°āĻž āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻĒāĻā§āĻāĻ¤āĻž, āĻāĻāĻŋāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦā§ˇ
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻ¸ā§āĻ¨ Apache Spark-āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻžāĻ āĻāĻŦāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻĻā§āĻāĻŋ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻĒā§āĻ¸ā§āĻāĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, OpenShift āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ (oc) āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻŦā§āĨ¤ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ Kubernetes āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ Kubernetes āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ (kubectl) āĻŦāĻž āĻ¤āĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻāĻā§āĻ˛āĻŋ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, oc adm āĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯) āĻĨā§āĻā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ - āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ
āĻāĻžāĻ āĻāĻŦāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻā§ āĻĄā§āĻāĻž āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻ°āĻŽā§āĻļāĻ¨ āĻĄāĻŋāĻŦāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻāĻāĻžāĻŦā§, āĻ¸ā§āĻāĻžāĻŦāĻā§āĻ˛āĻŋ āĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻŦā§ āĻļā§āĻˇ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ (āĻ¯āĻĻāĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž) āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋāĻ° āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻāĻžāĻļ āĻāĻ āĻļā§āĻ°ā§āĻŖā§āĻ° āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻāĻžāĻ˛ āĻšāĻ¤ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻļā§āĻˇ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĄāĻŋāĻŦāĻžāĻ āĻāĻ°āĻŋ, āĻĻā§āĻāĻŋ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻ¸āĻŽā§āĻāĻŦ:
- āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻŽā§āĻĄā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ;
- āĻāĻāĻāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻāĻāĻāĻŋ āĻā§āĻ¸ā§āĻ āĻ˛ā§āĻĒā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋāĻ° āĻ āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦā§āĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻāĻ¤ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ°ā§āĻŽāĻā§āĻˇā§āĻ¤ā§āĻ° āĻĨā§āĻā§ āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻļā§āĻˇ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻ¤ā§ āĻšāĻŦā§;
- āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋāĻ āĻŽā§āĻļāĻŋāĻ¨ā§āĻ° āĻĄā§āĻā§āĻ˛āĻĒ āĻāĻ°āĻž āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋāĻ¤ā§ āĻāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋ āĻ¨ā§āĻ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ˛ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻļā§āĻˇ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ, āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§āĻ¸ āĻ°ā§āĻ˛ āĻŽāĻĄā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĻāĻ˛ā§āĻ° āĻ¸āĻāĻ˛ āĻ¸āĻĻāĻ¸ā§āĻ¯āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŋ - āĻāĻāĻāĻŋ āĻā§āĻ¸ā§āĻ āĻ˛ā§āĻĒā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻŽā§āĻļāĻŋāĻ¨ āĻĨā§āĻā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻāĻĨāĻž āĻŦāĻ˛āĻž āĻ¯āĻžāĻāĨ¤ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
mkdir /opt/spark
cd /opt/spark
wget http://mirror.linux-ia64.org/apache/spark/spark-2.4.5/spark-2.4.5.tgz
tar zxvf spark-2.4.5.tgz
rm -f spark-2.4.5.tgz
āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŋ:
cd spark-2.4.5/
./build/mvn -Pkubernetes -DskipTests clean package
āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻ āĻ¨ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§, āĻāĻŦāĻ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻ ā§āĻ¯āĻžāĻ¸ā§āĻŽā§āĻŦāĻ˛āĻŋ/" āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§ āĻāĻžāĻ° āĻĢāĻžāĻāĻ˛ āĻĻāĻ°āĻāĻžāĻ°, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ āĻ¸āĻžāĻŦāĻĒā§āĻ°āĻā§āĻā§āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
./build/mvn -f ./assembly/pom.xml -Pkubernetes -DskipTests clean package
Kubernetes-āĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻŦā§āĻ¸ āĻāĻŽā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ 2āĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻĒāĻ¨ā§āĻĨāĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻā§āĻ¨āĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§;
- āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻŋāĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, HDFS-āĻ)āĨ¤
āĻĒā§āĻ°āĻĨāĻŽā§, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° "āĻĄāĻāĻžāĻ°-āĻāĻŽā§āĻ-āĻā§āĻ˛" āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ:
./bin/docker-image-tool.sh --help
āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻāĻĒāĻ¨āĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻŦāĻžāĻ°ā§ 3āĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ - āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ, āĻĒāĻžāĻāĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻŦāĻ āĻāĻ° āĻāĻ° āĻāĻ¨ā§āĻ¯;
- āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŦāĻŋāĻ° āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¨āĻžāĨ¤
āĻ āĻ¤āĻāĻŦ, āĻāĻŽāĻ°āĻž āĻ¨ā§āĻā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ:
vi bin/docker-image-tool-upd.sh
#!/usr/bin/env bash
function error {
echo "$@" 1>&2
exit 1
}
if [ -z "${SPARK_HOME}" ]; then
SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
. "${SPARK_HOME}/bin/load-spark-env.sh"
function image_ref {
local image="$1"
local add_repo="${2:-1}"
if [ $add_repo = 1 ] && [ -n "$REPO" ]; then
image="$REPO/$image"
fi
if [ -n "$TAG" ]; then
image="$image:$TAG"
fi
echo "$image"
}
function build {
local BUILD_ARGS
local IMG_PATH
if [ ! -f "$SPARK_HOME/RELEASE" ]; then
IMG_PATH=$BASEDOCKERFILE
BUILD_ARGS=(
${BUILD_PARAMS}
--build-arg
img_path=$IMG_PATH
--build-arg
datagram_jars=datagram/runtimelibs
--build-arg
spark_jars=assembly/target/scala-$SPARK_SCALA_VERSION/jars
)
else
IMG_PATH="kubernetes/dockerfiles"
BUILD_ARGS=(${BUILD_PARAMS})
fi
if [ -z "$IMG_PATH" ]; then
error "Cannot find docker image. This script must be run from a runnable distribution of Apache Spark."
fi
if [ -z "$IMAGE_REF" ]; then
error "Cannot find docker image reference. Please add -i arg."
fi
local BINDING_BUILD_ARGS=(
${BUILD_PARAMS}
--build-arg
base_img=$(image_ref $IMAGE_REF)
)
local BASEDOCKERFILE=${BASEDOCKERFILE:-"$IMG_PATH/spark/docker/Dockerfile"}
docker build $NOCACHEARG "${BUILD_ARGS[@]}"
-t $(image_ref $IMAGE_REF)
-f "$BASEDOCKERFILE" .
}
function push {
docker push "$(image_ref $IMAGE_REF)"
}
function usage {
cat <<EOF
Usage: $0 [options] [command]
Builds or pushes the built-in Spark Docker image.
Commands:
build Build image. Requires a repository address to be provided if the image will be
pushed to a different registry.
push Push a pre-built image to a registry. Requires a repository address to be provided.
Options:
-f file Dockerfile to build for JVM based Jobs. By default builds the Dockerfile shipped with Spark.
-p file Dockerfile to build for PySpark Jobs. Builds Python dependencies and ships with Spark.
-R file Dockerfile to build for SparkR Jobs. Builds R dependencies and ships with Spark.
-r repo Repository address.
-i name Image name to apply to the built image, or to identify the image to be pushed.
-t tag Tag to apply to the built image, or to identify the image to be pushed.
-m Use minikube's Docker daemon.
-n Build docker image with --no-cache
-b arg Build arg to build or push the image. For multiple build args, this option needs to
be used separately for each build arg.
Using minikube when building images will do so directly into minikube's Docker daemon.
There is no need to push the images into minikube in that case, they'll be automatically
available when running applications inside the minikube cluster.
Check the following documentation for more information on using the minikube Docker daemon:
https://kubernetes.io/docs/getting-started-guides/minikube/#reusing-the-docker-daemon
Examples:
- Build image in minikube with tag "testing"
$0 -m -t testing build
- Build and push image with tag "v2.3.0" to docker.io/myrepo
$0 -r docker.io/myrepo -t v2.3.0 build
$0 -r docker.io/myrepo -t v2.3.0 push
EOF
}
if [[ "$@" = *--help ]] || [[ "$@" = *-h ]]; then
usage
exit 0
fi
REPO=
TAG=
BASEDOCKERFILE=
NOCACHEARG=
BUILD_PARAMS=
IMAGE_REF=
while getopts f:mr:t:nb:i: option
do
case "${option}"
in
f) BASEDOCKERFILE=${OPTARG};;
r) REPO=${OPTARG};;
t) TAG=${OPTARG};;
n) NOCACHEARG="--no-cache";;
i) IMAGE_REF=${OPTARG};;
b) BUILD_PARAMS=${BUILD_PARAMS}" --build-arg "${OPTARG};;
esac
done
case "${@: -1}" in
build)
build
;;
push)
if [ -z "$REPO" ]; then
usage
exit 1
fi
push
;;
*)
usage
exit 1
;;
esac
āĻāĻāĻŋāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Pi āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻžāĻ āĻ¸āĻŽā§āĻŦāĻ˛āĻŋāĻ¤ āĻāĻāĻāĻŋ āĻŽā§āĻ˛āĻŋāĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻŽā§āĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŋ (āĻāĻāĻžāĻ¨ā§ {docker-registry-url} āĻšāĻ˛ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ° URL, {repo} āĻšāĻ˛ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ, āĻ¯āĻž OpenShift , {image-name} â āĻāĻŦāĻŋāĻ° āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ (āĻ¯āĻĻāĻŋ āĻāĻŦāĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¤āĻŋāĻ¨-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻŦāĻŋāĻāĻžāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, Red Hat OpenShift āĻāĻŦāĻŋāĻ° āĻ¸āĻŽāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§), {tag} â āĻāĻ° āĻā§āĻ¯āĻžāĻ āĻāĻŦāĻŋāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ):
./bin/docker-image-tool-upd.sh -f resource-managers/kubernetes/docker/src/main/dockerfiles/spark/Dockerfile -r {docker-registry-url}/{repo} -i {image-name} -t {tag} build
āĻāĻ¨āĻ¸ā§āĻ˛ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ OKD āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°ā§āĻ¨ (āĻāĻāĻžāĻ¨ā§ {OKD-API-URL} āĻšāĻ˛ OKD āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° API URL):
oc login {OKD-API-URL}
āĻāĻ¸ā§āĻ¨ āĻĄāĻāĻžāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ¤ā§ āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻā§āĻā§āĻ¨ āĻĒāĻžāĻ¨:
oc whoami -t
OKD āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻĄāĻāĻžāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ¤ā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°ā§āĻ¨ (āĻāĻŽāĻ°āĻž āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻā§āĻā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ):
docker login {docker-registry-url}
āĻāĻ¸ā§āĻ¨ āĻĄāĻāĻžāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻāĻā§āĻĄāĻŋāĻ¤ā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻĄāĻāĻžāĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻŋ:
./bin/docker-image-tool-upd.sh -r {docker-registry-url}/{repo} -i {image-name} -t {tag} push
āĻāĻ¸ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ OKD āĻ¤ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻš āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ URL āĻā§āĻ˛ā§āĻ¨ (āĻāĻāĻžāĻ¨ā§ {project} OpenShift āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¨āĻžāĻŽ, {OKD-WEBUI-URL} āĻšāĻ˛ OpenShift āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨āĻ¸ā§āĻ˛ā§āĻ° URL ) - https://{OKD-WEBUI-URL}/console /project/{project}/browse/images/{image-name}āĨ¤
āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻŦāĻŋāĻļā§āĻˇāĻžāĻ§āĻŋāĻāĻžāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻāĻŽāĻ°āĻž āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻĒāĻ°ā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦ):
oc create sa spark -n {project}
oc adm policy add-scc-to-user anyuid -z spark -n {project}
OKD āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¯āĻžāĻ, āĻ¤ā§āĻ°āĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻāĻŦāĻ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§:
/opt/spark/bin/spark-submit --name spark-test --class org.apache.spark.examples.SparkPi --conf spark.executor.instances=3 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace={project} --conf spark.submit.deployMode=cluster --conf spark.kubernetes.container.image={docker-registry-url}/{repo}/{image-name}:{tag} --conf spark.master=k8s://https://{OKD-API-URL} local:///opt/spark/examples/target/scala-2.11/jars/spark-examples_2.11-2.4.5.jar
āĻāĻāĻžāĻ¨ā§:
âāĻ¨āĻžāĻŽ â āĻ¸ā§āĻ āĻāĻžāĻā§āĻ° āĻ¨āĻžāĻŽ āĻ¯āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĒāĻĄā§āĻ° āĻ¨āĻžāĻŽ āĻāĻ āĻ¨ā§ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦā§;
âclass â āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻā§āĻ˛āĻžāĻ¸, āĻāĻžāĻ¸ā§āĻ āĻļā§āĻ°ā§ āĻšāĻ˛ā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ;
âconf â āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ;
spark.executor.instances â āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻāĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž;
spark.kubernetes.authenticate.driver.serviceAccountName - āĻĒāĻĄ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ Kubernetes āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻā§āĻ° āĻ¨āĻžāĻŽ (Kubernetes API-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻāĻŦāĻ āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§);
spark.kubernetes.namespace â Kubernetes āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĄā§āĻ°āĻžāĻāĻāĻžāĻ° āĻāĻŦāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻāĻ° āĻĒāĻĄ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻŦā§;
spark.submit.deployMode â āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ (āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ "āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻŦāĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ "āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ" āĻāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯);
spark.kubernetes.container.image - āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻĒāĻĄ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ;
spark.master â Kubernetes API URL (āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻžāĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻļāĻŋāĻ¨ āĻĨā§āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻā§);
local:// āĻšāĻ˛ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ā§āĻ° āĻĒāĻĨāĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ OKD āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻ¯āĻžāĻ āĻāĻŦāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻĒāĻĄāĻā§āĻ˛āĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻŋ - https://{OKD-WEBUI-URL}/console/project/{project}/browse/podsā§ˇ
āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§āĻ¸ āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻ¨ā§āĻ¯āĻžāĻĒāĻļāĻāĻā§āĻ˛āĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻ¸ā§āĻā§āĻ°ā§āĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻšāĻžāĻĄā§āĻĒ) āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻāĻŽāĻž āĻĻāĻŋāĻ¨āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŦāĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ WebHDFS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ (āĻāĻāĻžāĻ¨ā§ {host} āĻšāĻ˛ WebHDFS āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻšā§āĻ¸ā§āĻ, {port} āĻšāĻ˛ WebHDFS āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻĒā§āĻ°ā§āĻ, {path-to-file-on-hdfs} āĻšāĻ˛ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ° āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻĒāĻĨ HDFS āĻ):
curl -i -X PUT "http://{host}:{port}/webhdfs/v1/{path-to-file-on-hdfs}?op=CREATE
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ°āĻāĻŽ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻŦā§āĻ¨ (āĻāĻāĻžāĻ¨ā§ {āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨} āĻšāĻ˛ āĻāĻāĻāĻ°āĻāĻ˛ āĻ¯āĻž āĻĢāĻžāĻāĻ˛ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§):
HTTP/1.1 307 TEMPORARY_REDIRECT
Location: {location}
Content-Length: 0
āĻāĻāĻāĻĄāĻŋāĻāĻĢāĻāĻ¸-āĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨ (āĻāĻāĻžāĻ¨ā§ {āĻĒāĻžāĻĨ-āĻā§-āĻ˛ā§āĻāĻžāĻ˛-āĻĢāĻžāĻāĻ˛} āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻšā§āĻ¸ā§āĻā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻĨ):
curl -i -X PUT -T {path-to-local-file} "{location}"
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻĄāĻŋāĻāĻĢāĻāĻ¸-āĻ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ (āĻāĻāĻžāĻ¨ā§ {class-name} āĻšāĻ˛ āĻ¸ā§āĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ āĻ¯āĻž āĻāĻžāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§):
/opt/spark/bin/spark-submit --name spark-test --class {class-name} --conf spark.executor.instances=3 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace={project} --conf spark.submit.deployMode=cluster --conf spark.kubernetes.container.image={docker-registry-url}/{repo}/{image-name}:{tag} --conf spark.master=k8s://https://{OKD-API-URL} hdfs://{host}:{port}/{path-to-file-on-hdfs}
āĻāĻāĻŋ āĻ˛āĻā§āĻˇ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ HDFS āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻžāĻāĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ Dockerfile āĻāĻŦāĻ entrypoint.sh āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ - /opt/spark/jars āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻļā§āĻ˛ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋ āĻāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻ¨ā§āĻā§āĻ°āĻŋāĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ SPARK_CLASSPATH-āĻ HDFS āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ - āĻ ā§āĻ¯āĻžāĻĒāĻžāĻāĻŋ āĻ˛āĻŋāĻāĻŋ
āĻāĻ°āĻ, āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻ āĻĄā§āĻā§āĻ˛āĻĒ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻāĻāĻŋāĻā§ āĻ¸āĻŋāĻāĻ/āĻ¸āĻŋāĻĄāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻāĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ ā§āĨ¤ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻāĻāĻŋ CI/CD āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§āĻā§ āĻāĻāĻŋāĻ˛ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ CI āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻā§āĻ¨ā§āĻ/āĻ°āĻžāĻ¨āĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ API-āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ˛āĻā§āĻˇā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ REST API āĻšāĻŋāĻ¸āĻžāĻŦā§ Apache Livy āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ CURL āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯ā§āĻāĻŋ āĻ¯ā§āĻā§āĻ¨ CI āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¸āĻšāĻā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ Kubernetes āĻāĻĒāĻŋāĻāĻ-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§ āĻāĻ° āĻĒā§āĻ˛ā§āĻ¸āĻŽā§āĻ¨ā§āĻ āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻā§ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŋ - āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ˛ā§āĻĒā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ CI/CD āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ
āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĨ¤
Apache Livy āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻā§āĻāĻž - āĻāĻāĻŋ āĻāĻāĻāĻŋ HTTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¯āĻž āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻŦāĻ āĻāĻāĻāĻŋ RESTful API āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĒāĻžāĻ¸ āĻāĻ°ā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ HDP āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻ
āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻāĻŦāĻ āĻĄāĻāĻžāĻ° āĻāĻŋāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ OKD āĻŦāĻž āĻ
āĻ¨ā§āĻ¯ āĻā§āĻ¨ Kubernetes āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻŋ -
FROM java:8-alpine
ENV SPARK_HOME=/opt/spark
ENV LIVY_HOME=/opt/livy
ENV HADOOP_CONF_DIR=/etc/hadoop/conf
ENV SPARK_USER=spark
WORKDIR /opt
RUN apk add --update openssl wget bash &&
wget -P /opt https://downloads.apache.org/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz &&
tar xvzf spark-2.4.5-bin-hadoop2.7.tgz &&
rm spark-2.4.5-bin-hadoop2.7.tgz &&
ln -s /opt/spark-2.4.5-bin-hadoop2.7 /opt/spark
RUN wget http://mirror.its.dal.ca/apache/incubator/livy/0.7.0-incubating/apache-livy-0.7.0-incubating-bin.zip &&
unzip apache-livy-0.7.0-incubating-bin.zip &&
rm apache-livy-0.7.0-incubating-bin.zip &&
ln -s /opt/apache-livy-0.7.0-incubating-bin /opt/livy &&
mkdir /var/log/livy &&
ln -s /var/log/livy /opt/livy/logs &&
cp /opt/livy/conf/log4j.properties.template /opt/livy/conf/log4j.properties
ADD livy.conf /opt/livy/conf
ADD spark-defaults.conf /opt/spark/conf/spark-defaults.conf
ADD entrypoint.sh /entrypoint.sh
ENV PATH="/opt/livy/bin:${PATH}"
EXPOSE 8998
ENTRYPOINT ["/entrypoint.sh"]
CMD ["livy-server"]
āĻāĻ¤ā§āĻĒāĻ¨ā§āĻ¨ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĄāĻāĻžāĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ OKD āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĨ¤ āĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ ({āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ-āĻāĻāĻāĻ°āĻāĻ˛} - āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ° URL, {āĻāĻŦāĻŋ-āĻ¨āĻžāĻŽ} - āĻĄāĻāĻžāĻ° āĻāĻŦāĻŋāĻ° āĻ¨āĻžāĻŽ, {āĻā§āĻ¯āĻžāĻ} - āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻā§āĻ¯āĻžāĻ, {livy-url} - āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ URL āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ Livy āĻšāĻŦā§; "āĻ°ā§āĻ" āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻĻāĻŋ Red Hat OpenShift āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¨ā§āĻĄāĻĒā§āĻ°ā§āĻ āĻāĻžāĻāĻĒā§āĻ° āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻāĻ¨āĻā§āĻ°ā§āĻ¸ āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ):
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
component: livy
name: livy
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
component: livy
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
component: livy
spec:
containers:
- command:
- livy-server
env:
- name: K8S_API_HOST
value: localhost
- name: SPARK_KUBERNETES_IMAGE
value: 'gnut3ll4/spark:v1.0.14'
image: '{registry-url}/{image-name}:{tag}'
imagePullPolicy: Always
name: livy
ports:
- containerPort: 8998
name: livy-rest
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/log/livy
name: livy-log
- mountPath: /opt/.livy-sessions/
name: livy-sessions
- mountPath: /opt/livy/conf/livy.conf
name: livy-config
subPath: livy.conf
- mountPath: /opt/spark/conf/spark-defaults.conf
name: spark-config
subPath: spark-defaults.conf
- command:
- /usr/local/bin/kubectl
- proxy
- '--port'
- '8443'
image: 'gnut3ll4/kubectl-sidecar:latest'
imagePullPolicy: Always
name: kubectl
ports:
- containerPort: 8443
name: k8s-api
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: spark
serviceAccountName: spark
terminationGracePeriodSeconds: 30
volumes:
- emptyDir: {}
name: livy-log
- emptyDir: {}
name: livy-sessions
- configMap:
defaultMode: 420
items:
- key: livy.conf
path: livy.conf
name: livy-config
name: livy-config
- configMap:
defaultMode: 420
items:
- key: spark-defaults.conf
path: spark-defaults.conf
name: livy-config
name: spark-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: livy-config
data:
livy.conf: |-
livy.spark.deploy-mode=cluster
livy.file.local-dir-whitelist=/opt/.livy-sessions/
livy.spark.master=k8s://http://localhost:8443
livy.server.session.state-retain.sec = 8h
spark-defaults.conf: 'spark.kubernetes.container.image "gnut3ll4/spark:v1.0.14"'
---
apiVersion: v1
kind: Service
metadata:
labels:
app: livy
name: livy
spec:
ports:
- name: livy-rest
port: 8998
protocol: TCP
targetPort: 8998
selector:
component: livy
sessionAffinity: None
type: ClusterIP
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app: livy
name: livy
spec:
host: {livy-url}
port:
targetPort: livy-rest
to:
kind: Service
name: livy
weight: 100
wildcardPolicy: None
āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻĒāĻĄ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ˛āĻŋāĻāĻŋ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ˛āĻŋāĻā§āĻāĻāĻŋāĻ¤ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§: http://{livy-url}/uiā§ˇ āĻ˛āĻŋāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻāĻŋ āĻāĻāĻāĻŋ REST āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ¸ā§āĻāĻŽā§āĻ¯āĻžāĻ¨ā§ˇ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨ā§āĻā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ (āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻāĻžāĻ¸ā§āĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸āĻš āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ "āĻāĻ°ā§āĻāĻ¸" āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§):
{
"info": {
"_postman_id": "be135198-d2ff-47b6-a33e-0d27b9dba4c8",
"name": "Spark Livy",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "1 Submit job with jar",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{nt"file": "local:///opt/spark/examples/target/scala-2.11/jars/spark-examples_2.11-2.4.5.jar", nt"className": "org.apache.spark.examples.SparkPi",nt"numExecutors":1,nt"name": "spark-test-1",nt"conf": {ntt"spark.jars.ivy": "/tmp/.ivy",ntt"spark.kubernetes.authenticate.driver.serviceAccountName": "spark",ntt"spark.kubernetes.namespace": "{project}",ntt"spark.kubernetes.container.image": "{docker-registry-url}/{repo}/{image-name}:{tag}"nt}n}"
},
"url": {
"raw": "http://{livy-url}/batches",
"protocol": "http",
"host": [
"{livy-url}"
],
"path": [
"batches"
]
}
},
"response": []
},
{
"name": "2 Submit job without jar",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{nt"file": "hdfs://{host}:{port}/{path-to-file-on-hdfs}", nt"className": "{class-name}",nt"numExecutors":1,nt"name": "spark-test-2",nt"proxyUser": "0",nt"conf": {ntt"spark.jars.ivy": "/tmp/.ivy",ntt"spark.kubernetes.authenticate.driver.serviceAccountName": "spark",ntt"spark.kubernetes.namespace": "{project}",ntt"spark.kubernetes.container.image": "{docker-registry-url}/{repo}/{image-name}:{tag}"nt},nt"args": [ntt"HADOOP_CONF_DIR=/opt/spark/hadoop-conf",ntt"MASTER=k8s://https://kubernetes.default.svc:8443"nt]n}"
},
"url": {
"raw": "http://{livy-url}/batches",
"protocol": "http",
"host": [
"{livy-url}"
],
"path": [
"batches"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "41bea1d0-278c-40c9-ad42-bf2e6268897d",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "3cdd7736-a885-4a2d-9668-bd75798f4560",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {}
}
āĻāĻ¸ā§āĻ¨ āĻ¸āĻāĻā§āĻ°āĻš āĻĨā§āĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ, OKD āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻāĻŋ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻāĻžāĻ˛ā§ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŋāĻ¨āĻž āĻĻā§āĻā§āĻ¨ - https://{OKD-WEBUI-URL}/console/project/{project}/browse/podsā§ˇ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ˛āĻŋāĻāĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻļāĻ¨ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§ (http://{livy-url}/ui), āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§, Livy API āĻŦāĻž āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ¯āĻžāĻ˛ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻ āĻā§āĻ°āĻāĻ¤āĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸ā§āĻļāĻ¨āĻāĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ˛āĻ
āĻāĻāĻ¨ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻ˛āĻŋāĻāĻŋ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻ˛āĻŋāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻĄā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻĨāĻžāĻāĻž āĻ˛āĻŋāĻāĻŋ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°ā§āĻ° āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ - https://{OKD-WEBUI-URL}/console/project/{project}/browse/pods/{livy-pod-name }?tab=logs. āĻ¤āĻžāĻĻā§āĻ° āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§ "livy" āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§ Livy REST API āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ-āĻ¸āĻžāĻŦāĻŽāĻŋāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻĒāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ (āĻāĻāĻžāĻ¨ā§ {livy-pod-name} āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻĒāĻĄā§āĻ° āĻ¨āĻžāĻŽāĨ¤ āĻ˛āĻŋāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§)āĨ¤ āĻ¸āĻāĻā§āĻ°āĻšāĻāĻŋ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŽāĻ¨ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ˛āĻŋāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻšā§āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤
āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ - āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°
āĻāĻāĻ¨ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻžāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ ā§āĻā§āĨ¤ āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¨ā§āĻāĻŋāĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻā§āĻ°ā§āĻ¨āĻāĻŦ āĻ¸āĻ¤ā§āĻ¤āĻž āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻā§āĻŦāĻ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻĒāĻ°āĻŋāĻĒāĻā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°āĻžāĻāĻ-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ˛āĻžāĻāĻāĻŦā§āĻ¨ā§āĻĄ āĻĢāĻžāĻ¸ā§āĻāĻĄā§āĻāĻž āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ)āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻā§āĻāĻŋ - āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ (2.4.5) āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ°āĻ āĻ¸ā§āĻŽāĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻāĻ¨ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (3.0.0) āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§, āĻ¤āĻŦā§ āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻ¤āĻžāĻ°āĻŋāĻ āĻ āĻāĻžāĻ¨āĻž āĻ°āĻ¯āĻŧā§ āĻā§āĻā§āĨ¤ . āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻ¯ā§āĻ āĻāĻ°ā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻĒāĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻšā§āĻ¯āĻžāĻĄā§āĻĒ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻŽā§āĻ¯āĻžāĻĒ āĻŽāĻžāĻāĻ¨ā§āĻ āĻāĻ°āĻž) āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻˇāĻ¤āĻŋāĻĒā§āĻ°āĻŖ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻā§ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻŋ - āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻ˛ā§āĻĒā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¨āĨ¤
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻšāĻ˛ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻāĻŦāĻ Google āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ -
- āĻ˛āĻžāĻāĻāĻŦā§āĻ¨ā§āĻĄ āĻĢāĻžāĻ¸ā§āĻāĻĄā§āĻāĻž āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ/āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§;
- āĻšā§āĻ˛āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž:
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm install incubator/sparkoperator --namespace spark-operator
- āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻĨā§āĻā§ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§ (https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/tree/master/manifest)āĨ¤ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻžāĻ° āĻŽāĻ¤ā§ - āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§āĻ¤ā§ API āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ v1beta1 āĻ¸āĻš āĻāĻāĻāĻŋ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻŦāĻŋāĻŦāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ API āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš āĻāĻŋāĻ-āĻāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻā§āĻ¯āĻžāĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, "v1beta1-0.9.0-2.4.0"āĨ¤ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ "āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ" āĻ
āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°ā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ CRD-āĻāĻ° āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§:
oc get crd sparkapplications.sparkoperator.k8s.io -o yaml
āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĨāĻžāĻāĻ˛ā§, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻĄ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§ āĻ¸ā§āĻĒā§āĻ¸ā§ āĻā§āĻ˛āĻžāĻāĻĄāĻĢā§āĻ˛ā§-āĻāĻĢāĻĄāĻŋāĻĒāĻŋ-āĻ¸ā§āĻĒāĻžāĻ°ā§āĻāĻ āĻĒāĻžāĻ°ā§āĻāĻ°) āĻāĻŦāĻ "āĻ¸ā§āĻĒāĻžāĻ°ā§āĻāĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻ¸" āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻāĻžāĻāĻĒ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ . āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻŦā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
oc get sparkapplications -n {project}
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ 3āĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
- āĻāĻāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻ¯āĻžāĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻĨāĻžāĻā§āĨ¤ āĻāĻžāĻ°ā§āĻā§āĻ āĻāĻŦāĻŋāĻ¤ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ° āĻ¯āĻž CI/CD āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻĄāĻāĻžāĻ° āĻāĻŋāĻ¤ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻ¨;
- "SparkApplication" āĻāĻžāĻāĻĒ āĻāĻŦāĻ āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻāĻžāĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨āĨ¤ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ (āĻ¯ā§āĻŽāĻ¨
github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/v1beta1-0.9.0-2.4.0/examples/spark-pi.yaml ) āĻāĻļāĻ¤ā§āĻšāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¨ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻā§:- "apiVersion" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ API āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§;
- "metadata.namespace" āĻ āĻāĻŋāĻ§āĻžāĻ¨āĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŦā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻŦā§;
- "spec.image" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§;
- "spec.mainClass" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻ˛āĻžāĻ¸ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻļā§āĻ°ā§ āĻšāĻ˛ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ;
- "spec.mainApplicationFile" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻāĻžāĻ° āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻžāĻĨ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§;
- "spec.sparkVersion" āĻ āĻāĻŋāĻ§āĻžāĻ¨āĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŦā§;
- "spec.driver.serviceAccount" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ Kubernetes āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§;
- "spec.executor" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻā§āĻ¤ āĻ¸āĻŽā§āĻĒāĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§;
- "spec.volumeMounts" āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ (āĻāĻāĻžāĻ¨ā§ {spark-service-account} āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ):
apiVersion: "sparkoperator.k8s.io/v1beta1"
kind: SparkApplication
metadata:
name: spark-pi
namespace: {project}
spec:
type: Scala
mode: cluster
image: "gcr.io/spark-operator/spark:v2.4.0"
imagePullPolicy: Always
mainClass: org.apache.spark.examples.SparkPi
mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar"
sparkVersion: "2.4.0"
restartPolicy:
type: Never
volumes:
- name: "test-volume"
hostPath:
path: "/tmp"
type: Directory
driver:
cores: 0.1
coreLimit: "200m"
memory: "512m"
labels:
version: 2.4.0
serviceAccount: {spark-service-account}
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
executor:
cores: 1
instances: 1
memory: "512m"
labels:
version: 2.4.0
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
āĻāĻ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻŽāĻŋāĻāĻž āĻŦāĻžāĻāĻ¨ā§āĻĄāĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ Kubernetes API āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ā§āĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ (āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ)āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻĒāĻĄ āĻ¤ā§āĻ°āĻŋāĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻŽāĻŋāĻāĻž āĻŦāĻžāĻāĻ§āĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
oc adm policy add-role-to-user edit system:serviceaccount:{project}:{spark-service-account} -n {project}
āĻāĻāĻŋāĻ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¯ā§ āĻāĻ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻ¸ā§āĻĒā§āĻ¸āĻŋāĻĢāĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ "hadoopConfigMap" āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¨āĻž āĻ°ā§āĻā§āĻ Hadoop āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ ConfigMap āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ - "āĻļāĻŋāĻĄāĻŋāĻāĻ˛" āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻāĻāĻŋ spark-pi.yaml āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻŋ:
oc apply -f spark-pi.yaml
āĻāĻāĻŋ "sparkapplications" āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§:
oc get sparkapplications -n {project}
> NAME AGE
> spark-pi 22h
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒāĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¯āĻžāĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž "āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨" āĻ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
oc get sparkapplications spark-pi -o yaml -n {project}
āĻāĻžāĻāĻāĻŋ āĻļā§āĻˇ āĻšāĻ˛ā§, POD "āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ" āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻŦā§, āĻ¯āĻž "sparkapplications"-āĻāĻ āĻāĻĒāĻĄā§āĻ āĻšāĻŦā§āĨ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻŦāĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĻā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻāĻāĻžāĻ¨ā§ {sparkapplications-pod-name} āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻĒāĻĄā§āĻ° āĻ¨āĻžāĻŽ):
oc logs {sparkapplications-pod-name} -n {project}
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ āĻŦāĻŋāĻļā§āĻˇāĻžāĻ¯āĻŧāĻŋāĻ¤ sparkctl āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§, āĻāĻ° āĻāĻ¤ā§āĻ¸ āĻā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻāĻŋ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°ā§āĻ¨, Go āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
git clone https://github.com/GoogleCloudPlatform/spark-on-k8s-operator.git
cd spark-on-k8s-operator/
wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz
tar -xzf go1.13.3.linux-amd64.tar.gz
sudo mv go /usr/local
mkdir $HOME/Projects
export GOROOT=/usr/local/go
export GOPATH=$HOME/Projects
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
go -version
cd sparkctl
go build -o sparkctl
sudo mv sparkctl /usr/local/bin
āĻāĻ˛ā§āĻ¨ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ:
sparkctl list -n {project}
āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ:
vi spark-app.yaml
apiVersion: "sparkoperator.k8s.io/v1beta1"
kind: SparkApplication
metadata:
name: spark-pi
namespace: {project}
spec:
type: Scala
mode: cluster
image: "gcr.io/spark-operator/spark:v2.4.0"
imagePullPolicy: Always
mainClass: org.apache.spark.examples.SparkPi
mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar"
sparkVersion: "2.4.0"
restartPolicy:
type: Never
volumes:
- name: "test-volume"
hostPath:
path: "/tmp"
type: Directory
driver:
cores: 1
coreLimit: "1000m"
memory: "512m"
labels:
version: 2.4.0
serviceAccount: spark
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
executor:
cores: 1
instances: 1
memory: "512m"
labels:
version: 2.4.0
volumeMounts:
- name: "test-volume"
mountPath: "/tmp"
āĻāĻ¸ā§āĻ¨ sparkctl āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻžāĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ:
sparkctl create spark-app.yaml -n {project}
āĻāĻ˛ā§āĻ¨ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ:
sparkctl list -n {project}
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻāĻā§āĻ¨ā§āĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ:
sparkctl event spark-pi -n {project} -f
āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ:
sparkctl status spark-pi -n {project}
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°ā§, āĻāĻŽāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (2.4.5) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻŦāĻŋāĻˇā§āĻā§āĻ¤ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻ:
- āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ, āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻ° āĻ āĻāĻžāĻŦāĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĨāĻžāĻāĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ āĻāĻŋāĻ˛, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĄā§āĻāĻžāĻ¤ā§ āĻā§āĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻžāĻ° āĻ¨ā§āĻ¤āĻŋ (āĻĄāĻžāĻāĻž āĻĨā§āĻā§ āĻā§āĻĄā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§)āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŖāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻĄāĻŧāĻŋāĻ¤ āĻĄā§āĻāĻž āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻĄā§āĻāĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻ¤ā§ āĻ¯ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛ā§āĻā§āĻāĻŋāĻ˛ āĻ¤āĻž āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻšā§āĻ°āĻžāĻ¸ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤ Kubernetes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻā§āĻĄāĻŧā§ āĻāĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĄāĻŧāĻŋāĻ¤ āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ° āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻāĨ¤ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¯āĻĨā§āĻˇā§āĻ āĻŦāĻĄāĻŧ āĻšāĻ˛ā§, āĻāĻžāĻ¸ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻŦāĻĄāĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĄāĻŋāĻ¸ā§āĻā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻļāĻŽāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž Kubernetes (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, Alluxio) āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĄā§āĻāĻžāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ˇ
- āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻžāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž-āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻ āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻžāĻ°āĻŦāĻžāĻ°ā§āĻ¸ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§ āĻāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž (āĻ¯āĻĻāĻŋāĻ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ 3.0.0 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻžāĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§), āĻāĻŦāĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ (https://spark.apache.org/docs/2.4.5/security.html) āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ¯āĻŧāĻžāĻ°āĻ¨, āĻŽā§āĻ¸ā§āĻ¸ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ ā§āĻ¯āĻžāĻ˛ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻā§ āĻ¸ā§āĻā§āĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻžāĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻž - āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋ āĻ¯āĻžāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧā§, āĻšāĻ¯āĻŧ āĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻļā§āĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¨āĻ¯āĻŧ, āĻ āĻĨāĻŦāĻž āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻāĻāĻāĻāĻĄāĻŋ āĻ¸āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§, āĻ¯āĻž āĻĄā§āĻāĻžāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ā§āĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻ¯āĻŧ (āĻāĻāĻŋ āĻĒāĻĄāĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ āĻĒāĻ˛āĻŋāĻ¸āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ)āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§, āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻ˛ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĄāĻāĻžāĻ° āĻāĻŽā§āĻā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž, āĻ āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨ā§ āĻā§āĻšā§āĻ¤ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻŦāĻ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ˛āĻā§āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĨ¤
- āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻ¨āĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻŽā§āĻĄā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽāĻā§āĻ˛āĻŋāĻ¤ā§ (āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛, āĻĄāĻāĻžāĻ° āĻŦā§āĻ¸ āĻāĻŽā§āĻ āĻāĻŦāĻ āĻ˛āĻā§āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ) āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 2.3.0 āĻāĻŦāĻ 2.4.5 āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻāĻ°āĻŖ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŋāĻ˛āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻĒāĻĄā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ - āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (3.0.0) āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻā§āĻ° āĻāĻžāĻā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ¨ā§āĻā§, āĻ¤āĻŦā§ āĻāĻ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻŦāĻāĻžāĻ¯āĻŧ āĻ°ā§āĻā§āĻā§āĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻĒāĻĄā§āĻāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¯āĻŧ āĻ¨āĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ YARN āĻ¤ā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§ āĻ¤ā§āĻ˛āĻŦā§āĨ¤
āĻĢāĻŋāĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com